gpt4 book ai didi

c# - 如何 "await"关闭另一个窗口

转载 作者:太空狗 更新时间:2023-10-30 00:02:52 25 4
gpt4 key购买 nike

我有很多这样的代码:

MyWindow window = new MyWindow(someParam, callingWindow)

使用包含类似内容的 MyWindow 类:

public MyWindow.Processing()
{
` // Do processing
...
callingWindow.RefreshListBox(); // Listbox for example
}

是否有内置的方法来等待窗口关闭。我希望能够在调用窗口的类中编写类似的东西:

await mywindowInstanceCloseEvent; 
RefreshListBoxWhenWindowIsClosed();

我想知道是否有一种简单的方法可以“暂停”一个方法(无论它是异步的还是非异步的)直到特定窗口关闭。

最佳答案

您可以使用 TaskCompletionSourceClosed为此事件。这是我使用的一种方法:

private Task ShowPopup<TPopup> (TPopup popup)
where TPopup : Window
{
var task = new TaskCompletionSource<object>();
popup.Owner = Application.Current.MainWindow;
popup.Closed += (s, a) => task.SetResult(null);
popup.Show();
popup.Focus();
return task.Task;
}

你可以这样使用它:

await ShowPopup(new MyWindow());

你可以替换Show使用 ShowDialog 的方法如果您希望窗口是模态的。

如果你想从窗口中得到结果,你可以修改代码使用TaskCompletionSource<Result>适本地。

关于c# - 如何 "await"关闭另一个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25601794/

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