c#子线程执行完怎么通知主线程(转)

Posted xihong2014

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#子线程执行完怎么通知主线程(转)相关的知识,希望对你有一定的参考价值。

定义一个委托实现回调函数
public delegate void CallBackDelegate(string message);

程序开始的时候
//把回调的方法给委托变量
CallBackDelegate cbd = CallBack;
//启动线程
Thread th = new Thread(Fun);
th.Start(cbd);//开始线程,代入参数

//线程执行的方法 参数是个委托, 线程中参数需要用object类型.
public void Fun(object o)
{
        //这里是你的操作代码,循环,根据条件退出while
	while(true)
        {
        }
        //把传来的参数转换为委托
	CallBackDelegate cbd = o as CallBackDelegate;
        //执行回调.
	cbd("这个线程传回的信息");
}

//回调方法
private void CallBack(string message)
{
        //主线程报告信息,可以根据这个信息做判断操作,执行不同逻辑.
	MessageBox.Show(message);
}

比如要在刚加载的时候进行网络请求操作,如果直接在UI线程中执行操作的话,那么界面就会是一片空白,然后出现程序没有响应的状态,用户容易以为是程序死了。如果只是在后台开一个线程然后在该线程中执行操作的话,界面虽然不是一片空白,但是用户无法做其他操作,如果点击某个按钮,那么还会出现程序没有响应的状态。
而如果用上面的回调方法的话,就可以解决上面的问题,所以如果有比较耗时的操作,那么使用回调是一个不错的选择

https://www.cnblogs.com/zxtceq/p/7825827.html



以上是关于c#子线程执行完怎么通知主线程(转)的主要内容,如果未能解决你的问题,请参考以下文章

Java主线程如何等待子线程执行结束(转)

Android可以让主线程在其他子线程执行完后再执行吗?如果可以,该怎么做?

怎样将子线程中的参数传到主线程

c++/mfc 子线程结束后再来执行主线程下操作 该怎么处理

主线程怎么给子线程发送消息

如何使“主线程”等待“子线程”执行结束后再继续执行