c# - 如何在不卡住 WPF 应用程序中的 UI 线程的情况下让子线程休眠?

标签 c# wpf multithreading sleep thread-sleep

我有一个 WPF 应用程序,我有单独的线程正在运行以完成任务,我想让当前线程进入休眠状态,例如,

Thread.CurrentThread.Sleep(10000)

我确实在 Java 中看到了它,但在 C# 中没有看到。我知道我只有一个 UI 线程,所以如果我使用 Thread.Sleep(10000),我的 UI 线程将被阻塞。我正在使用 .NET 4.5 的异步和等待。

var words = await Task.Factory.StartNew(() => { StringMgr.TextToUniqueWords(File.ReadAllText(filename));

// I want to be able to sleep this thread for 10 seconds, without the UI freezing

});

那么如何在不卡住 WPF 应用程序中的 UI 线程的情况下让子线程休眠?

谢谢!

最佳答案

因为您已经在使用async,所以您可以使用异步方式:

var words = await Task.Run(async () =>
{
  StringMgr.TextToUniqueWords(File.ReadAllText(filename));
  await Task.Delay(TimeSpan.FromSeconds(10));
});

但是,我怀疑 sleep 对于您要解决的实际问题来说是错误的解决方案。如果您想针对您的实际问题发布另一个问题,您可能会找到更好的解决方案。

关于c# - 如何在不卡住 WPF 应用程序中的 UI 线程的情况下让子线程休眠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15722400/

相关文章:

asp.net-mvc - ASP.NET Mvc +线程

c# - C# 中的 Microsoft.Office.Interop.Word 的 SynonymInfo[]

C#获取xml文档中的所有节点但忽略嵌套节点

c# - sql错误没有返回给调用者

.net - 如何将图 block (图像)拖放到指定位置? WPF

java - 在多线程环境中读取的值

c# - 打开并阅读命令提示符命令

c# - 我怎样才能找出是什么阻止了对象的垃圾收集?

c# - 具有不同方向的 WPF 虚拟化 TreeView 不虚拟化?

multithreading - 如何在 Rust 中为不同线程克隆随机数生成器?