交互式C#流程通信

时间:2012-02-13 13:06:44

标签: c#

我开发了一个C#程序,我将其用作父进程的子进程(使用与C#不同的编程语言编写,即:Smallworld Magik)。 C#程序的标准I / O通道用于通信。

意思是与Smallworld Magik流程中的C#程序进行通信。因此,C#程序应该接收来自Smallworld Magik过程的命令,Smallworld Magik过程应该接收C#程序的结果/更新。

C#程序最初通过程序的main方法接收参数。 C#程序将结果/更新写入输出通道,Smallworld Magik进程接收并处理它们。

直到这里没问题。

问题在于C#程序从输入通道(System.Console.In)接收输入命令。我正在使用System.Console.ReadLine()方法来获取输入命令。调用此方法会阻止程序执行。

有人对此有“非阻塞”解决方案吗? 由于我是一名新手C#开发人员,请保持低级别:)。

1 个答案:

答案 0 :(得分:0)

你可以使用线程,因为你说你是一个新手,我会引导你进入教程,因为线程很棘手,你应该知道你在做什么:{{3} }

接下来要做的是为ReadLine创建一个单独的线程,并将结果调回主线程。像这样:

void Start()
{
    Thread T = new Thread(ThreadMethod);
    T.IsBackground = true;
    T.Start();
}

void ThreadMethod()
{
    string s = System.Console.ReadLine();

    this.Invoke(DoStuffInMain, s);
}

void DoStuffInMainThread(string s)
{
    //
}