我的主题:
public void main_news_thread(MainApplication main)
{
ThreadPool.QueueUserWorkItem(p => check_news(validrsslist, 0));
}
我每隔一段时间就打电话给这个帖子......
我怎么知道线程什么时候结束所以我可以调用另外两个处理GUI的方法?我怎样才能引用这个线程池线程?
答案 0 :(得分:4)
由于您在谈论UI,您可能希望查看BackgroundWorker,它提供RunWorkerCompleted事件,在UI线程上触发 ,并指示成功/失败/取消等。
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker_events.aspx
但就个人而言,我只是在我的工作代码末尾运行一个回调方法(记得切换回UI线程,通过WPF中的Dispatcher.Invoke或winforms中的this.Invoke)。
答案 1 :(得分:1)
你可以在线程本身执行这些方法(你必须自己调用来访问gui线程):
ThreadPool.QueueUserWorkItem(p => {
check_news(validrsslist, 0);
//do something after the task is finished
});