等待后如何在不丢失上下文的情况下实现 AsyncTaskCodeActivity

问题描述

这里是一个简单的测试 AsyncCodeActivity 的例子,它等待 30 秒,然后设置一个输出变量。此示例使用 Nito.AsyncEx.Interop 中的 ApmAsyncFactory 图书馆。执行此操作时,它等待 30 秒,然后出现以下错误

一个ActivityContext只能在其作用域内访问 它被传入的函数

namespace RequesterNetFrameworkLib
{
    public class RequesterNetLib : AsyncTaskCodeActivity
    {
        [Category("Output")]
        public OutArgument<string> Result { get; set; }


        protected override async Task ExecuteAsync(AsyncCodeActivityContext context)
        {
            await Task.Delay(TimeSpan.FromSeconds(30));
            Result.Set(context,"Hello");
        }
    }

    public abstract class AsyncTaskCodeActivity : AsyncCodeActivity
    {
        protected sealed override IAsyncResult BeginExecute(AsyncCodeActivityContext context,AsyncCallback callback,object state)
        {
            var task = ExecuteAsync(context);
            return ApmAsyncFactory.ToBegin(task,callback,state);
        }

        protected sealed override void EndExecute(AsyncCodeActivityContext context,IAsyncResult result)
        {
            ApmAsyncFactory.ToEnd(result);
        }

        protected abstract Task ExecuteAsync(AsyncCodeActivityContext context);
    }

我认为它无法保留上下文,我该如何克服?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)