首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

怎么终止一个异步方法

2013-11-29 
如何终止一个异步方法本帖最后由 chyun7290 于 2013-10-12 11:08:26 编辑这个异步方法起到了一个线程的作

如何终止一个异步方法
本帖最后由 chyun7290 于 2013-10-12 11:08:26 编辑 这个异步方法起到了一个线程的作用,在界面加载时调用,实现处理多条数据,并通知UI更新进度条,现在想在某处杀掉它,如何处理?,我的这种处理方式能不能行的通?

        public async static void ProcessData()
        {
            int persent = 0;
            int i = 0;
            if (App.LastRecord > 0 )
            {
                i = App.LastRecord;
            }

            for (; i < App.AllCount; i++)
            {
                App.LastRecord++;
                await SaveData.WriteData(App.DateList[i]);
                persent = (int)((float)(i + 1) * 100 / (float)TotalCount);
                _mainPage.Dispatcher.BeginInvoke(delegate()
                {
                    _mainPage.mainProgressbar.Value = persent;
                });
            }

            await Task.Run(() =>
            {
                if (persent >= 100)
                    return;
            });
            _mainPage.Dispatcher.BeginInvoke(delegate()
            {
                _mainPage.NavigationService.Navigate(new Uri("/ResultPage.xaml", UriKind.Relative));
            });
        }

[解决办法]
无法终止,只能设置一个标志,让异步处理函数检测后就退出。
[解决办法]
Task是可以cancel的,参考:
http://msdn.microsoft.com/en-us/library/dd997396.aspx

热点排行