我目前有一个在我的 C# 代码中运行的 .exe,.exe 收集来自特定位置的文件列表,一旦它运行它会提示用户按 esc 退出或输入重新收集。因为我试图从我的代码中将其作为自动化过程运行,所以我想添加一个命令行参数,如 -s 或其他东西来绕过用户输入的提示。如果不绕过这个,.exe 将永远不会关闭,软件最终会崩溃。这是我的 .exe 代码
class StackGrabber
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
try
{
StackReader.MessageHandler.OnMessage += new StackReader.MessageHandler.NotificationHandler(OnNotification);
StackGrabber grabber = new StackGrabber();
grabber.Grab();
}
catch (Exception ex)
{
DisplayMessage(ex.ToString());
}
}
private volatile bool IsComplete = false;
private StackReader.StackReader reader;
void Grab()
{
try
{
DisplayMessage("Grabbing stacks... \n");
reader = new StackReader.StackReader();
reader.OnReadComplete += new System.Windows.Forms.MethodInvoker(OnComplete);
if (reader.ReadStacks() > 0)
{
while (!reader.IsComplete)
Thread.Sleep(500);
}
else
{
Thread.Sleep(500);
}
DisplayMessage(Environment.NewLine + "Press esc to exit" + Environment.NewLine);
//...
//...
Console.Read();
}
catch (Exception ex)
{
DisplayMessage(ex.ToString());
}
}
public static void OnNotification(string msg)
{
DisplayMessage(msg);
}
public void OnComplete()
{
IsComplete = true;
}
private static object ConsoleLock = new object();
private static void DisplayMessage(string msg)
{
lock (ConsoleLock)
{
Console.WriteLine(msg);
}
}
}
我这样调用可执行文件:
StackGrab.StartInfo.FileName = @"..\\bin\\StackGrabber.exe";
StackGrab.StartInfo.CreateNoWindow = true;
StackGrab.StartInfo.UseShellExecute = false;
StackGrab.Start();
StackGrab.WaitForExit();
我希望能够在命令提示符下调用 StackGrabber.exe,这样我就可以放置C:\>StackGrabber -s
并且它不会等待“esc”输入退出