button1_Click没有使用异步.运行时界面会卡10秒.button2_Click使用了异步.界面一样卡10秒.谁能解答一下为什么吗?异步不是在另一个线程中执行的吗?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace bar4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private delegate int myde(int a); private void button1_Click(object sender, EventArgs e)
{
myde my = new myde(mymethod);
textBox1.Text= my(1000).ToString();
}
private int mymethod(int s)
{
Thread.Sleep(10000);
return s * s;
} private void button2_Click(object sender, EventArgs e)
{
myde my = new myde(mymethod);
IAsyncResult async=my.BeginInvoke(5,null,null);
int result = my.EndInvoke(async);
textBox1.Text = result.ToString();
//this.Invoke(my, new Object[] { 1000 });
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace bar4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private delegate int myde(int a); private void button1_Click(object sender, EventArgs e)
{
myde my = new myde(mymethod);
textBox1.Text= my(1000).ToString();
}
private int mymethod(int s)
{
Thread.Sleep(10000);
return s * s;
} private void button2_Click(object sender, EventArgs e)
{
myde my = new myde(mymethod);
IAsyncResult async=my.BeginInvoke(5,null,null);
int result = my.EndInvoke(async);
textBox1.Text = result.ToString();
//this.Invoke(my, new Object[] { 1000 });
}
}
}
解决方案 »
- 关于新闻标题的绑定 求思路或代码更好
- C# 怎样做个“浏览”来选择文件,(不是选择文件)
- 关于DataList
- 一个关于向DataSet填充大量数据的问题
- 怎么取Dropdownlist控件的值??
- C# 中 list.addrange() 这里面怎么写啊 是写一个数组吗?
- 100分跪求高手json转xml(xml结构有要求)
- 使用System.Diagnostics.Process类调用子进程的奇怪问题
- VS中调试稳定可用,但是直接运行exe则会在12小时内随机崩溃,大大们,谁能告诉我这是怎么回事啊
- 求一简单SQL
- 悬赏100元人民币求一个webservice的调用代码,对高手来说就几句代码!
- 关于违约金的
可你主线程停在那等结果阿。
int result = my.EndInvoke(async);
这边可以使用回调函数取返回的结果值
到当前线程为止
http://blog.csdn.net/lanwilliam/archive/2008/05/05/2390939.aspx
if(_threadShow != null && _threadShow.ThreadState == ThreadState.Running)
{
return;
}
_threadShow = new Thread(new ThreadStart(mymethod));
_threadShow.Start();