据我们所知, 程序正在逐行执行,现在我面临问题,我有一个需要几秒钟执行的方法, 我以为我可以通过线程来解决它,但我稍后会谈到它,现在我想做的是下一步:
当该方法开始执行并且方法完成时窗口可以自行关闭时,如何打开一个带有“仍在执行...”之类消息的窗口, 我需要它,因为我想避免 UI 卡住,因为那个长方法不在另一个任务/线程中。
它的样子是这样的:
if (e.Key == Key.Delete)
{
//Could I show window here like like "Loading please wait.."
ExecuteLongMethod();
//When this is done close this method
}
谢谢大家, 干杯
最佳答案
如果由于某种原因您的 ExecuteLongMethod()
必须在调度程序线程上执行,您可以创建一个在单独线程中启动的新窗口,并在长时间运行期间显示该窗口。 -运行方法来完成。请参阅以下链接了解更多信息。
Wait screen during rendering UIElement in WPF
另一个选项是在后台线程上执行长时间运行的方法并在主线程上显示加载窗口。
建议的方法是使用任务并行库 (TPL) 并启动任务:https://msdn.microsoft.com/en-us/library/dd460717(v=vs.110).aspx
if (e.Key == Key.Delete)
{
Window window = new Window();
window.Show();
Task.Factory.StartNew(() => ExecuteLongMethod())
.ContinueWith(task =>
{
window.Close();
},System.Threading.CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
}
关于c# - 当我的方法在后台 WPF 中执行某些操作时,如何打开窗口或其他内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43117345/