gpt4 book ai didi

c#-4.0 - Windows 8 - 等待 Task - 需要对已完成的监听器进行异步回调

转载 作者:行者123 更新时间:2023-12-04 18:15:31 24 4
gpt4 key购买 nike

我有一个函数,它从存储中打开一个文件并返回一个 bool 值,指定文件打开得很好。

private async Task<bool> SaveImage()
{
try
{
await filesave.openAsync(FileAccessMode.ReadWrite)
}
catch()
{
return false;
}

return true;
}

我想调用 await SaveImage() 函数,但不知何故想要一个监听器/事件处理程序,它告诉我何时完成。完成后,我想用新数据更新我的布局。使用适用于 Windows 8 的新 WINRT 异步/等待异步方法如何实现这一点?是否有解决方法/替代方法。

如何设置事件处理程序类型场景? (完成)

最佳答案

你只是await调用你的方法,并在它完成后使用应该运行的代码。您不需要手动注册事件处理程序。

var succeeded = await SaveImage();
// Because of the "await" keyword in the above line, the current method
// will not continue until "SaveImage" has completed its async work and
// signaled its Task
if (succeeded) { ... }

当然,由于上面的代码使用了 await关键字,它需要放在一个也标记为 async 的方法中.如果该方法需要向其调用者发出完成信号,那么它也应该返回一个 TaskTask<T> ;例如:
private async Task<string> MyHelperMethod() {
var succeeded = await SaveImage();
if (succeeded)
return "Success";
else
return "Failure";
}
// then, in some other method:
var message = await MyHelperMethod();

或者,如果方法调用 SaveImage是行尾——假设它是 Button 的处理程序的 Click事件——那么它可以是 async void :
private async void ButtonClick(object sender, EventArgs args) {
var succeeded = await SaveImage();
if (succeeded) { ... }
}

关于c#-4.0 - Windows 8 - 等待 Task<Bool> - 需要对已完成的监听器进行异步回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11821966/

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