gpt4 book ai didi

c# - Window.Show() 不显示控件,但 Window.ShowDialog() 显示控件 2

转载 作者:可可西里 更新时间:2023-11-01 10:44:47 25 4
gpt4 key购买 nike

我这样做过Window.Show() doesn't display controls but Window.ShowDialog() does解决问题。但是尽管如此,我还是有同样的问题。我如何修改以下代码来解决此问题?

            TimeWindow aTimeWindow = new TimeWindow();
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += ((o, ea) => {
// Highly time consumable task
_resetEvent.Set();
});
aTimeWindow.Show();
bw.RunWorkerAsync();
_resetEvent.WaitOne();
aTimeWindow.Close();

_resetEvent 是类的字段。 TimeWindow 只是一个带有 TextBox WPF 控件的图像。

最佳答案

您可以只使用 async/await,以便在工作完成时显示和关闭窗口。像这样的东西:

private async void ShowWindow()
{
var aTimeWindow = new TimeWindow();
aTimeWindow.Show();
await Task.Run((Action)DoWork);
aTimeWindow.Close();
}

private void DoWork()
{
// perform long running work here
}

编辑:

不使用异步/等待

private void ShowWindow()
{
var aTimeWindow = new TimeWindow();
aTimeWindow.Show();

Task.Run(()=>
{
DoWork();
})
.ContinueWith((t) =>
{
Application.Current.Dispatcher.BeginInvoke((Action)(() =>
{
aTimeWindow.Close();
}));
});
}

private void DoWork()
{
// perform long running work here
}

关于c# - Window.Show() 不显示控件,但 Window.ShowDialog() 显示控件 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30782460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com