c# - 如何实现 IAsyncOperationWithProgress

标签 c# asynchronous stream windows-runtime

我正在将一些自定义 .NET 流移植到 WINRT。语言是 C#。

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

我找到了一些使用 create_async 的 C 示例,但我想在 C# 中执行此操作,但我在 Metro 框架中找不到 create_async。

提前致谢

最佳答案

下面是一个使用 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;
    }
}

关于c# - 如何实现 IAsyncOperationWithProgress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10112696/

相关文章:

javascript - 我如何知道一组异步函数是否已完成执行?

android - 如何在 Android 中更快地从地址簿中获取数据?

c# - 构造函数中类字段的长时间运行初始化

javascript - 在带有 sails js 的 nodejs 中,缓冲区未被识别为缓冲区

c - stderr 和 stdout - 未缓冲与缓冲?

c# - 一个 string.Format 问题 (.NET)

c# - 客户端消息功能

java - 通过java中的管道流丢失数据

c# - 应用程序空闲超过1小时后自动运行的线程停止

c# - asp.net WebForms 中的 nhibernate 事务管理