我编写了一个C#void
async
函数,该函数采用以下参数:
string
url Bitmap
对象然后,该函数从文件缓存,内存缓存中检索url,或者异步从网站下载URL。
我的问题是:如何在Bitmap
对象填充图像时告知我何时可以在代码中使用此Bitmap
图像?
提前致谢。
答案 0 :(得分:3)
没有简单的方法可以了解 async void 方法何时完成。将方法的返回类型从void
更改为Task
。返回指示操作何时完成的任务。
然后等待Task
在客户端代码中完成很简单。只要Task
完成,您就可以使用Bitmap
。
如果您从某个来源下载位图,理想情况下应该返回Task<Bitmap>
而不是将Bitmap
作为参数并进行修改。 (如果我理解错误,请忽略它。)
答案 1 :(得分:1)
如果你想在Bitmap准备就绪时检查,最简单的方法就是改变你的方法:
async Task<bool> myMethod(myParamter) {
//DO Something
return true;
}
然后按以下方式调用方法
bool isReady = await myMethod(...)
您还必须在调用myMethod
添加异步
改进版本:
Task<bool> pendingDownload = null;
private async void mainMethod(...) {
if(pendingDownload != null) {
MessageBox.Show("Image is not ready!");
return;
}
try{
pendingDownload = myMethod(...);
bool isReady = await pendingDownload;
MessageBox.Show("Bitmap downloaded");
} catch(Exception e) {
MessageBox.Show("Error in downloading image: " + ex.Message);
}
pendingDownload = null;
}