C#流程开始滞留

时间:2018-04-17 05:13:47

标签: c#

我写了一个简单的TCP Server应用程序, 当程序获得请求时,它将调用exe文件来执行某些操作。 该应用程序在我的电脑上运行良好。

但是当我在另一台PC上运行时,线程会因为它停留在进程启动而卡住,所以我检查了任务管理器是否运行了exe文件。它确实有用。

我不知道如何解决它。

这是我的代码:

System.Diagnostics.Process process = new System.Diagnostics.Process();
string path = System.Environment.CurrentDirectory;
process.StartInfo.WorkingDirectory = path;
process.StartInfo.FileName = "FileTransferTool\\FileTransfer.exe";
process.StartInfo.Arguments = argument;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.CreateNoWindow = false;

process.Start();  // the thread stuck here

我打印出消息,显示

System.ComponentModel.Win32Exception(0x80004005):

系统找不到System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startIn)中指定的文件 FO) 在ClassPackage.DsUploadFiletoNC.Start(Object [] param)的System.Diagnostics.Process.Start()中

1 个答案:

答案 0 :(得分:0)

我通过添加另一个进程来调用主程序顶部的cmd.exe解决了这个问题,代码如下所示:

该程序将以管理员身份运行,但我不知道为什么

static void Main(string[] args)
    {
        System.Diagnostics.Process process = new System.Diagnostics.Process();
        string path = System.Environment.CurrentDirectory;
        process.StartInfo.WorkingDirectory = @"C:\Windows\System32";

        process.StartInfo.FileName = "cmd.exe";
        //process.StartInfo.FileName = "FileTransferTool\\circle.txt";

        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardInput = true;
        process.StartInfo.RedirectStandardInput = true;
        //process.StartInfo.CreateNoWindow = false;
        process.Start();

        using (TCPServer server = new TCPServer())
        {
            server.Start();
            Console.WriteLine("Socket Server Start...");
            Console.ReadKey(true);
        }
    }