我正在尝试将数据方法中的存储过程调用转换为异步调用。这是原始方法:
public void InsertFoo(Foo foo)
{
this.Database.SomeStoredProcedure(foo);
}
我的第一次尝试是这样的:
public void InsertFoo(Foo foo)
{
Task.Factory.StartNew(() =>
{
this.Database.SomeStoredProcedure(foo);
});
}
但是,我收到 this.Database 为空的运行时错误。(this.Database 是 L2S 数据上下文。)
然后我做了一些研究,并认为创建自己的本地副本就可以了:
public void InsertFoo(Foo foo)
{
MyDataContext db = this.Database;
Task.Factory.StartNew(() =>
{
db.SomeStoredProcedure(foo);
});
}
但是,db 在线程实际使用它之前就被释放,从而导致另一个运行时错误。
我只是想将 this.Database 传递给线程方法。那可能吗?如果是这样,怎么做?this.Database 在方法返回时将被销毁,因为类实例已经消失,所以我不知道如何解决这个问题。