我开发了一个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#开发人员,请保持低级别:)。
答案 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)
{
//
}