BeginInvoke异步执行的有关问题
BeginInvoke异步执行的问题
我现在做一个winform程序,有个要读数据的方法,因为时间可能较长,所以想用异步执行的方法去处理这个方法,代码如下:
然后我想测下是不是异步执行的,就在getData这个方法里写了System.Threading.Thread.Sleep(5000);
结果出现的是界面假死5秒后恢复正常。这不就是没有异步执行吗?为什么会这样?异步执行不就是创建程序创建个新的线程去处理的吗?应该怎么达到我想要的效果?请高人回答~
------解决方案--------------------
this.BeginInvoke会阻塞当前窗体进程
------解决方案--------------------
this 是主UI线程
------解决方案--------------------
用异步回调执行,就不会.开或者你用错了.
------解决方案--------------------
给你写了一个简单的例子,照着改改就成你要的了.
我现在做一个winform程序,有个要读数据的方法,因为时间可能较长,所以想用异步执行的方法去处理这个方法,代码如下:
this.BeginInvoke(new dlgGetData(getData), url, textBox1);
然后我想测下是不是异步执行的,就在getData这个方法里写了System.Threading.Thread.Sleep(5000);
结果出现的是界面假死5秒后恢复正常。这不就是没有异步执行吗?为什么会这样?异步执行不就是创建程序创建个新的线程去处理的吗?应该怎么达到我想要的效果?请高人回答~
------解决方案--------------------
this.BeginInvoke会阻塞当前窗体进程
------解决方案--------------------
this 是主UI线程
------解决方案--------------------
用异步回调执行,就不会.开或者你用错了.
------解决方案--------------------
给你写了一个简单的例子,照着改改就成你要的了.
private void Form1_Load(object sender, EventArgs e)
{
Action<string> action = new Action<string>(DoWork);
AsyncCallback callback = new AsyncCallback(Callback);
action.BeginInvoke("你要传的参数", callback, action);
}
protected void Callback(IAsyncResult ar)
{
Action<string> dlgt = (Action<string>)ar.AsyncState;
dlgt.EndInvoke(ar);
}
protected void DoWork(string msg)
{
Thread.Sleep(1000);//耗时操作
Action<string> action=delegate{ label1.Text=msg;}; //界面更新