Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何知道线程等待输入_C#_Multithreading_Process - Fatal编程技术网

C# 如何知道线程等待输入

C# 如何知道线程等待输入,c#,multithreading,process,C#,Multithreading,Process,我将cmd.exe作为一个进程运行,并启用其输入和输出重定向,并为inputreceived和outputreceived事件创建线程。 如何查找执行进程时等待输入的线程或进程?您不知道。您有输入流,也有输出流——就是这样。没有“等待输入”标志——这只是为了方便用户,而不是API的一部分 当您运行一个流程时,假定您知道如何与之交互——您不必等待流程告诉您提供输入。只需发送数据,无需等待“等待输入” 例如,如果您知道进程希望使用三种不同的ReadLines进行读取,只需发送 One Two Thr

我将cmd.exe作为一个进程运行,并启用其输入和输出重定向,并为inputreceivedoutputreceived事件创建线程。
如何查找执行进程时等待输入的线程或进程?

您不知道。您有输入流,也有输出流——就是这样。没有“等待输入”标志——这只是为了方便用户,而不是API的一部分

当您运行一个流程时,假定您知道如何与之交互——您不必等待流程告诉您提供输入。只需发送数据,无需等待“等待输入”

例如,如果您知道进程希望使用三种不同的
ReadLine
s进行读取,只需发送

One
Two
Three

ReadLine
并不是真正的数据请求——它只是等待输入流中出现足够的数据。如果已经有足够的数据(即,输入流有一个
\r\n
),它将立即返回。现在,从技术上讲,这确实会使线程处于等待状态,但这对您没有多大帮助-您不知道是哪个线程,也不知道等待状态的原因-它还不如尝试读取文件或其他内容。

您不知道。您有输入流,也有输出流——就是这样。没有“等待输入”标志——这只是为了方便用户,而不是API的一部分

当您运行一个流程时,假定您知道如何与之交互——您不必等待流程告诉您提供输入。只需发送数据,无需等待“等待输入”

例如,如果您知道进程希望使用三种不同的
ReadLine
s进行读取,只需发送

One
Two
Three

ReadLine
并不是真正的数据请求——它只是等待输入流中出现足够的数据。如果已经有足够的数据(即,输入流有一个
\r\n
),它将立即返回。现在,从技术上讲,这确实会使线程处于等待状态,但这对您没有多大帮助-您不知道是哪个线程,也不知道等待状态的原因-它还不如尝试读取文件或其他内容。

您不知道。您有输入流,也有输出流——就是这样。没有“等待输入”标志——这只是为了方便用户,而不是API的一部分

当您运行一个流程时,假定您知道如何与之交互——您不必等待流程告诉您提供输入。只需发送数据,无需等待“等待输入”

例如,如果您知道进程希望使用三种不同的
ReadLine
s进行读取,只需发送

One
Two
Three

ReadLine
并不是真正的数据请求——它只是等待输入流中出现足够的数据。如果已经有足够的数据(即,输入流有一个
\r\n
),它将立即返回。现在,从技术上讲,这确实会使线程处于等待状态,但这对您没有多大帮助-您不知道是哪个线程,也不知道等待状态的原因-它还不如尝试读取文件或其他内容。

您不知道。您有输入流,也有输出流——就是这样。没有“等待输入”标志——这只是为了方便用户,而不是API的一部分

当您运行一个流程时,假定您知道如何与之交互——您不必等待流程告诉您提供输入。只需发送数据,无需等待“等待输入”

例如,如果您知道进程希望使用三种不同的
ReadLine
s进行读取,只需发送

One
Two
Three

ReadLine
并不是真正的数据请求——它只是等待输入流中出现足够的数据。如果已经有足够的数据(即,输入流有一个
\r\n
),它将立即返回。现在,从技术上讲,这确实会使线程处于等待状态,但这对您没有多大帮助—您不知道是哪个线程,也不知道等待状态的原因—它可能是在尝试读取文件或其他内容。

如果不知道正在运行的进程是做什么的,则无法执行此操作

例如,如果您知道流程执行一个操作,然后打印结果,则可以实现将该操作发送到流程的输入流,并等待流程完成(打印消息)到输出流

您可以尝试使用以下方法来汇集进程的线程:

foreach (ProcessThread thread in process.Threads)
    if (thread.ThreadState == ThreadState.Wait
        && thread.WaitReason == ThreadWaitReason.UserRequest)
        ...

如果不知道正在运行的进程的功能,则无法执行此操作

例如,如果您知道流程执行一个操作,然后打印结果,则可以实现将该操作发送到流程的输入流,并等待流程完成(打印消息)到输出流

您可以尝试使用以下方法来汇集进程的线程:

foreach (ProcessThread thread in process.Threads)
    if (thread.ThreadState == ThreadState.Wait
        && thread.WaitReason == ThreadWaitReason.UserRequest)
        ...

如果不知道正在运行的进程的功能,则无法执行此操作

例如,如果您知道流程执行一个操作,然后打印结果,则可以实现将该操作发送到流程的输入流,并等待流程完成(打印消息)到输出流

您可以尝试使用以下方法来汇集进程的线程:

foreach (ProcessThread thread in process.Threads)
    if (thread.ThreadState == ThreadState.Wait
        && thread.WaitReason == ThreadWaitReason.UserRequest)
        ...

如果不知道正在运行的进程的功能,则无法执行此操作

例如,如果您知道流程执行一个操作,然后打印结果,则可以实现将该操作发送到流程的输入流,并等待流程完成(打印消息)到输出流

您可以尝试使用以下方法来汇集进程的线程:

foreach (ProcessThread thread in process.Threads)
    if (thread.ThreadState == ThreadState.Wait
        && thread.WaitReason == ThreadWaitReason.UserRequest)
        ...

您是否询问是否有方法检测通过
进程启动的程序。使用程序的命令行启动
->cmd.exe在