C#需要2个线程才能执行

时间:2015-06-19 19:56:45

标签: c# multithreading winforms

我有一个从SharePoint站点加载数据的程序。它加载txt文件,xml文件等。其中任何一个"加载"由于用户与SharePoint的连接,操作可能会花费大量时间。因此,在加载数据之前,整个Windows窗体UI都没有响应。

所以我想知道如何轻松地创建一个线程"检索"整个Windows窗体UI的信息仍然有效且可操作。

1 个答案:

答案 0 :(得分:1)

您有几个选择。我不打算为其中任何一个提供确切的代码,但是,我会为您提供研究主题。

您可以BackgroundWorker使用Task.Run()Thread.Start()或管理您自己的线程。下载完成后你需要发起一个事件吗?如果是这样,你可以这样做:

var task = new Task(() => DoSomething());
task.ContinueWith(() => SignalDone(), TaskScheduler.FromCurrentSynchronizationContext());
task.Run();

ContinueWith和TaskScheduler.FromCurrentSynchronizationContext将确保在UI线程上完成信令以最小化竞争条件。如果您正在对正在填充的任何内容进行数据绑定,那么您自己就可以了。