我有本地数据库中的一些SQL代码在我的应用程序,它的工作原理:WP8 UnauthorizedAccessException
using(var ctx = new TestCTX()){
var res = ctx.Test.ToList();
}
然后我想在OnInvoke方法来使用它PeriodicTask,我得到 UnauthorizedAccessException
:
public override void OnInvoke(ScheduledTask){
using(var ctx = new TestCTX()){
var res = ctx.Test.ToList();
}
}
但后来我把它包装到:
public override void OnInvoke(ScheduledTask task){
Deployment.Current.Dispatcher.BeginInvoke(()=>{
using(var ctx = new TestCTX()){
var res = ctx.Test.ToList();
}
});
}
然后它的工作。 所以,这里是一个问题:为什么我必须将它包装到BeginInvoke中?
因为OnInvoke方法在您的PeriodicTask的线程上,但您的方法中有一些控件必须在UI线程上执行。因此您必须在Dispatcher关联的线程上异步执行指定的委托。 –
什么控制?我只使用Linq 2 Sql。 –
你是否绑定了onInvoke方法中的任何数据来控制? –