一种请参考前面的一篇文章http://blog.csdn.net/findsafety/article/details/41820947
c#子线程执行完怎么通知主线程
利用回调,子线程拿到数据后回调给主线程,这样就不会阻塞
但是那个方法还是比较麻烦,下面有另外一种方法简单一些
首先在一个窗体中加上一个timer 其事件为
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
//线程委托防窗体假死
ThreadDelegate backWorkDel = new ThreadDelegate(prcessStart); //创建一个ThreadDelegate的实例,调用准备在后台运行的函数
backWorkDel.BeginInvoke(null, null);//使用异步的形式开始执行这个委托
}
private void prcessStart() //这个就是我们将要在后台执行的函数
{
//这里是耗时的网络请求操作
}
这样同样可以实现无阻塞,感觉比回调简单一些。其实就是开一个timer,但是只让它执行一次,而timer中的操作只是执行一个代理,代理的内容才是网络请求。当然也可以根据需要设置timer的开启,比如每点一次按钮我就开启,但是每次开启后都只让它执行一次