问题描述
大家好,
我收到此错误:
System.ObjectDisposedException:只能在传递的函数范围内访问ActivityContext
对象名称:"System.Activities.ActivityContext".
在System.Activities.ActivityContext.ThrowIfDisposed()
在System.Activities.ActivityContext.GetValue [T](LocationReference locationReference)处
at lambda_method(Closure,Resource)
在System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
在System.Collections.Generic.List`1..ctor(IEnumerable`1集合)中
在System.Linq.Enumerable.ToList [TSource](IEnumerable`1源)
在System.Data.Linq.Table`1.DeleteAllOnSubmit [TSubEntity](IEnumerable`1个实体)处
在...上的VirtualStorageActivityLibrary.Delete`1.Execute(CodeActivityContext上下文)中.在System.Activities.CodeActivity.InternalExecute(ActivityInstance实例,ActivityExecutor执行程序,BookmarkManager书签管理器)处
在System.Activities.ActivityInstance.Execute(ActivityExecutor执行程序,BookmarkManager书签管理器)处
在System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor执行程序,BookmarkManager书签管理器,位置resultLocation)中
来自我的简单Linq2Sql自定义活动:
Hi All,
I am getting this error:
System.ObjectDisposedException: An ActivityContext can only be accessed within the scope of the function it was passed into.
Object name: 'System.Activities.ActivityContext'.
at System.Activities.ActivityContext.ThrowIfDisposed()
at System.Activities.ActivityContext.GetValue[T](LocationReference locationReference)
at lambda_method(Closure , Resource )
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at System.Data.Linq.Table`1.DeleteAllOnSubmit[TSubEntity](IEnumerable`1 entities)
at VirtualStorageActivityLibrary.Delete`1.Execute(CodeActivityContext context) in ...
at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)
from my simple Linq2Sql custom activity:
[Category("Input")]
[RequiredArgument]
public InArgument<Func<TResult, bool>> Predicate { get; set; }
protected override void Execute(CodeActivityContext context)
{
var predicate = this.Predicate.Get(context);
using(DataContext dataContext = new DataContext(this.ConnectionString.Get(context)))
{
var table = dataContext.GetTable<TResult>();
var query = table.Where<TResult>(predicate);
table.DeleteAllOnSubmit(query);
dataContext.SubmitChanges();
}
}
推荐答案
有一个Microsoft示例〜\ WF \ Scenario \此beta2的ActivityLibrary \ Linq \ LinqToSql \ CS \ LinqToSql .看来,我在Linq谓词中放置 ActivityContext 之类的问题也可以在此处重复.
There is a Microsoft sample ~\WF\Scenario\ActivityLibrary\Linq\LinqToSql\CS\LinqToSql for this beta2. It looks that, the problem what I having such as disposing an ActivityContext in the Linq predicate can be duplicated here, also.
> 此错误是否有解决方法?
谢谢.
罗马
这篇关于来自ActivityContext的ObjectDisposedException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!