Windows Store App使用IAsyncOperationWithProgress的一个例子

IAsyncOperationWithProgress接口定义及其Progress属性定义原型如下:

generic<typename TResult, typename TProgress>
public interface class IAsyncOperationWithProgress : IAsyncInfo

property AsyncOperationProgressHandler<TResult, TProgress>^ Progress { 
   AsyncOperationProgressHandler<TResult, TProgress>^ get();
   void set (AsyncOperationProgressHandler<TResult, TProgress>^ value);
}


public delegate void AsyncOperationProgressHandler(
  IAsyncOperationWithProgress<TResult, TProgress> asyncInfo, 
  TProgress progressInfo
)

例子如下:

void Test()
{
    Windows::Foundation::IAsyncOperationWithProgress<double, int>^ async = create_async([](progress_reporter<int> report){
        double n = 12.34;

        for (int i = 0; i < 10; ++i)
        {
            concurrency::wait(1000);
            n += 1.0;
            report.report((i + 1) * 10);
        }

        return n;
    });

    async->Progress = ref new AsyncOperationProgressHandler<double, int>([](IAsyncOperationWithProgress<double, int>^ op, int pro){
        OutputDebugString(L"progress:");
        OutputDebugString(pro.ToString()->Data());
        OutputDebugString(L"%...\n");
    });

    create_task(async).then([](double n){
        OutputDebugString(L"result = ");
        OutputDebugString(n.ToString()->Data());
        OutputDebugString(L"\n");
    });
}

输出结果如下:
progress:10%...
progress:20%...
progress:30%...
progress:40%...
progress:50%...
The thread 0xed4 has exited with code 0 (0x0).
progress:60%...
progress:70%...
progress:80%...
progress:90%...
progress:100%...
result = 22.34
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值