来自ActivityContext的ObjectDisposedException [英] ObjectDisposedException from ActivityContext

查看:52
本文介绍了来自ActivityContext的ObjectDisposedException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我收到此错误:

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示例 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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆