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

本文关键字:长时间 执行 线程 需要 | 更新日期: 2023-09-27 17:57:15

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

所以我想知道如何在整个窗口表单 UI 仍然有效且可操作的情况下轻松创建一个用于"检索"信息的线程。

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

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

您可以使用 BackgroundWorker、Task.Run() 或通过执行 Thread.Start() 来管理自己的线程。下载完成后是否需要触发事件?如果是这样,您可以执行以下操作:

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

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