ReadLine在工作流步骤中不起作用

时间:2019-09-04 09:01:32

标签: c# .net-core console-application workflow

我正在.NETCore控制台应用程序中创建注册步骤。在该步骤中,我正在使用Console.ReadLine从控制台应用程序中读取输入。但是它突然终止了。

public class SendRequestStep : StepBody
{       
    public override ExecutionResult Run(IStepExecutionContext context)
    {
        Console.Write("IsChanged?");
        string result = Console.ReadLine();
        switch (result)
        {
            case "Yes":
            {

            }
            case "No":
            {

            }
        }
        return ExecutionResult.Next();
     }
 }

使用工作流核心时有人遇到以上问题吗?

预先感谢

1 个答案:

答案 0 :(得分:0)

那将不起作用,因为工作流在后台线程上运行。也许您可以创建一个等待外部事件(ExecutionResult.WaitForEvent(eventName, eventKey, effectiveDate))的步骤,然后可以通过Console.Readline()发送您收集的所有内容(使用Host.PublishEvent(eventName, eventKey, data)或其他任何方式)。

在您的步骤上执行以下操作:

public override ExecutionResult OnRun(IStepExecutionContext context)
{
    if (!context.ExecutionPointer.EventPublished)
    {
        // do more stuff here...

        return ExecutionResult.WaitForEvent(eventName, eventKey, effectiveDate);
    }

    // Get the sent data from `context.ExecutionPointer.EventData`
    Result = context.ExecutionPointer.EventData;

    return ExecutionResult.Next();
}