如何实现IAsyncOperationWithProgress(How to implement I

2019-09-16 12:04发布

我移植了一些自定义.NET流到WinRT的。 语言是C#。

有IAsyncOperationWithProgress的一些示例实现? 由于方法ReadAsync,WriteAsync从Windows.Storage.Streams需要它们。 自定义的WinRT流的实现也受到了欢迎。

我发现使用create_async一些C的例子,但我要做到这一点在C#中,并在新城框架,我无法找到create_async。

提前致谢

Answer 1:

对于C#,你应该检查出的异步编程这个//建立通话 。

如果您使用的高级别C ++,你应该看看这个文章,了解如何在PPL做异步操作。

如果您需要实现从低级别C ++自己的异步操作,你应该看看WRL :: AsyncBase类。



Answer 2:

下面是一个使用IAsyncOperationWithProgress显示编程安装一个XAP文件的进度的例子。 我是很新,Win8的发展,不知道这是否是完全地道。

注意Dispatcher.BeginInvoke马歇尔进度回到UI线程。 希望能帮助到你:

private async void InstallApp(string name, Uri uri)
{
    try
    {
        StatusTextBlock.Text = "Installing app";
        var installTask = InstallationManager.AddPackageAsync(name, uri);

        installTask.Progress = (installResult, progress) => Dispatcher.BeginInvoke(() =>
        {
            StatusTextBlock.Text = "Progress: " + progress;
        });

        var result = await installTask;
        StatusTextBlock.Text = "Done: " + result.InstallState.ToString();
    }
    catch (Exception ex)
    {
        StatusTextBlock.Text = "Failed to install: " + ex.Message;
    }
}


文章来源: How to implement IAsyncOperationWithProgress