我有一个 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/