Windows 8 Windows应用商店应用程序UI-没有响应
我正在尝试设计一个在执行长时间运行的任务时仍能保持响应的UI 为此,我在VS2012中创建了一个简单的应用程序,并添加了以下类:Windows 8 Windows应用商店应用程序UI-没有响应,windows-8,Windows 8,我正在尝试设计一个在执行长时间运行的任务时仍能保持响应的UI 为此,我在VS2012中创建了一个简单的应用程序,并添加了以下类: using System.Threading.Tasks; namespace TaskTest { class Class1 { public async Task<int> Async() { //simulate a long running process
using System.Threading.Tasks;
namespace TaskTest
{
class Class1
{
public async Task<int> Async()
{
//simulate a long running process
for (long x = 0; x < long.MaxValue; x++) { }
return 1;
}
}
}
使用System.Threading.Tasks;
命名空间任务测试
{
一班
{
公共异步任务async()
{
//模拟长时间运行的过程
对于(长x=0;x
然后我修改了主页的LoadState()方法:
protected override async void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
{
await DoLongRunningProcess();
}
private async Task DoLongRunningProcess()
{
var id = 0;
id = await new Class1().Async();
await new MessageDialog(id + "").ShowAsync();
}
protected override async void LoadState(对象导航参数,字典页面状态)
{
等待DoLongRunningProcess();
}
专用异步任务DoLongRunningProcess()
{
var-id=0;
id=wait new Class1().Async();
等待新消息对话框(id+“”)。ShowAsync();
}
我希望页面在进程执行时保持响应。但是,当我运行此代码时,加载页面需要很长时间。我做错了什么
TIA
异步
不是魔法;它只是让您能够编写异步代码。特别是,async
。您可以使用Task.Run
来执行此操作
您可能会发现我的或有帮助的。
async
不是魔法;它只是让您能够编写异步代码。特别是,async
。您可以使用Task.Run
来执行此操作
您可能会发现我的或有帮助的。那很有帮助。我做了以下更改,得到了我想要的结果:
class Class1
{
public int Launch()
{
//throw new Exception("Class1 exception");
for (var i = 0; i < int.MaxValue / 2; i++) ;
return 1;
}
}
Class1类
{
公共int发布()
{
//抛出新异常(“Class1异常”);
对于(var i=0;i
protected async override void LoadState(对象导航参数,字典页面状态)
{
var task=DoLongRunningProcess();
等待任务;
等待新消息对话框(task.Result+“”)。ShowAsync();
}
私有任务DoLongRunningProcess()
{
返回Task.Run(()=>newclass1().Launch());
}
页面将继续加载,并在短暂暂停后显示消息对话框。然而,现在我需要知道如何捕捉异常。如果我取消注释//抛出新异常。。。在方法Launch()中的第行,它被报告为未处理的异常。我想在主UI线程中捕获此异常(即,在方法LoadState的主体中),但我似乎无法管理它。这很有帮助。我做了以下更改,得到了我想要的结果:
class Class1
{
public int Launch()
{
//throw new Exception("Class1 exception");
for (var i = 0; i < int.MaxValue / 2; i++) ;
return 1;
}
}
Class1类
{
公共int发布()
{
//抛出新异常(“Class1异常”);
对于(var i=0;i
protected async override void LoadState(对象导航参数,字典页面状态)
{
var task=DoLongRunningProcess();
等待任务;
等待新消息对话框(task.Result+“”)。ShowAsync();
}
私有任务DoLongRunningProcess()
{
返回Task.Run(()=>newclass1().Launch());
}
页面将继续加载,并在短暂暂停后显示消息对话框。然而,现在我需要知道如何捕捉异常。如果我取消注释//抛出新异常。。。在方法Launch()中的第行,它被报告为未处理的异常。我想在主UI线程(即方法LoadState的主体)中捕获此异常,但似乎无法管理它