异步,等待不能隐式转换Task

时间:2013-04-07 10:32:42

标签: c# wpf image asynchronous webcam

我在撰写检索async表单Image的{​​{1}}方法时遇到问题。

我这样称呼这个方法:

WebCam

void webcam_ImageCaptured(object source, WebcamEventArgs e)
{
    _FrameImage.Source = Helper.LoadBitmap((System.Drawing.Bitmap)e.WebCamImage);
}

上面的代码(来自库),我试着写这个:

public static BitmapSource LoadBitmap(System.Drawing.Bitmap source)
{
    ip = source.GetHbitmap();

    bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ip, IntPtr.Zero, System.Windows.Int32Rect.Empty,
    System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
    DeleteObject(ip);

    return bs;
 }

我得到错误:

  

错误3无法将类型'System.Threading.Tasks.Task'隐式转换为'System.Windows.Media.ImageSource'

并且不知道为什么,因为我回复了同样的事情。

1 个答案:

答案 0 :(得分:1)

我看到它的方式,您的错误出现在第一个代码段中,它应该是:

_FrameImage.Source = await Helper.LoadBitmapAsync((System.Drawing.Bitmap)e.WebCamImage);

我添加了await关键字和Async后缀(根据Filip的建议)。

LoadBitmapAsync函数的结果是一个任务,您需要在将其分配给Source属性之前等待其结果。