Windows Store App使用IAsyncOperationWithProgress的一个例子

来源:互联网 发布:条顿森林战役 知乎 编辑:程序博客网 时间:2024/06/04 19:48

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
原创粉丝点击