【问题标题】:C# need 2 threads for long execution [closed]C#需要2个线程才能长时间执行[关闭]
【发布时间】:2015-09-05 22:02:59
【问题描述】:

我有一个从 SharePoint 网站加载数据的程序。它加载 txt 文件、xml 文件等。由于用户与 SharePoint 的连接,任何这些“加载”操作都可能需要大量时间。因此,在加载数据之前,整个 windows 窗体 UI 都没有响应。

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

【问题讨论】:

标签: c# multithreading winforms


【解决方案1】:

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

您可以使用BackgroundWorkerTask.Run() 或通过Thread.Start() 管理您自己的线程。下载完成后是否需要触发事件?如果是这样,你可以这样做:

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

ContinueWith 和 TaskScheduler.FromCurrentSynchronizationContext 将确保信号将在 UI 线程上完成,以最大限度地减少竞争条件。如果您要对正在填充的任何内容进行数据绑定,则只能靠自己。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-17
    • 2014-01-15
    • 1970-01-01
    • 2012-12-03
    • 2011-03-14
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多