首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待和异步在Xamarin.UWP中不起作用

等待和异步在Xamarin.UWP中不起作用
EN

Stack Overflow用户
提问于 2017-07-27 17:16:26
回答 1查看 257关注 0票数 0

我使用async和await来获取按钮的流。异步方法工作正常,当我使用等待时,它返回function.So我总是在内存流中得到空值。

当我使用这个( await renderTargetBitmap.RenderAsync(button))操作时,意味着它返回语句而不进行计算。

任何人,请建议我如何解决这个问题?我需要添加任何其他代码吗?

这是我的代码:

代码语言:javascript
复制
 public class StreamDependencyService: IStreamDependency
{
    Button button;
    public Stream GetStream()
    {
        button = new Button() { Height = 50, Width = 50, Content = "Click" };
        return GetStream_UWP().Result;
    }
    public async Task<Stream> GetStream_UWP()
    {
        Stream memoryStream ;
        var renderTargetBitmap = new RenderTargetBitmap();
        await renderTargetBitmap.RenderAsync(button);
        var pixels = await renderTargetBitmap.GetPixelsAsync();
        Guid encoderId = BitmapEncoder.JpegEncoderId;
        using (memoryStream = new MemoryStream())
        {
            var encoder = await BitmapEncoder.CreateAsync(encoderId, memoryStream.AsRandomAccessStream());
            encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)renderTargetBitmap.PixelWidth,
                (uint)renderTargetBitmap.PixelHeight, 96.0, 96.0, pixels.ToArray());

            await encoder.FlushAsync();

        }
        return memoryStream;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-07-27 18:26:19

不要使用GetStream_UWP().Result,你的代码会死锁。

首先等待按钮加载,然后在已加载事件中,在GetStream_UWP()上等待。

代码语言:javascript
复制
button.Loaded += async (s, e) => await GetStream_UWP();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45346378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档