C# 后台工作进程中的linq to sql查询跨线程访问无效
此代码引发一个C# 后台工作进程中的linq to sql查询跨线程访问无效,c#,linq,windows-phone,backgroundworker,C#,Linq,Windows Phone,Backgroundworker,此代码引发一个System.UnauthorizedAccessException:无效的跨线程访问异常 private void DoWorker(object sender,DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; using (DbContext db = new DbContext(DbContext.littreConnectionString)) {
System.UnauthorizedAccessException:无效的跨线程访问异常
private void DoWorker(object sender,DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
using (DbContext db = new DbContext(DbContext.littreConnectionString))
{
if (db.DatabaseExists())
{
var searchResults = from dbObject in db.LDicTable
where dbObject.word == SearchBox.Text
select dbObject;
if (!searchResults.Any())
{
wordExists = false;
}
}
}
}
这是因为您无法在后台工作线程方法中访问UI线程对象,因为它在单独的线程中执行,而不是在UI线程中。因此,它在不同的线程中执行,您尝试访问UI线程对象
您必须将文本框文本存储在某个字符串中,并在方法中使用该变量 有关详细信息,请参阅以下链接:
您无法访问后台工作者dowork方法中的文本框,因为它在单独的线程中执行,而不是在UI线程中。请将文本框文本存储在某个字符串中,并在方法中使用该变量欢迎使用Stackoverflow!请指定您使用的框架。是winforms吗?“phone”标记应该是什么意思?另外,检查这个问题:对不起,我忘了提到它对于windows phone 8,dbContext是从datacontext派生的类。我已经知道我不能从doWork方法访问ui踏板,只能从事件(progress,complete)访问ui踏板但当我试图检查查询是否返回任何值时,会引发异常,