它是一个.NET非GUI应用程序。它被指定为控制台应用程序,但实际上并未使用控制台。该应用程序的作用是对其他应用程序的GUI测试
答案 0 :(得分:2)
其他人已经描述了如何开始/停止问题执行...对于实际的密钥捕获,我建议registering a global hotkey - 但是,您需要有一个Windows窗体句柄可供您使用,所以我还建议从GUI应用程序启动命令行实用程序,或者只是在GUI应用程序中包含该功能。
这种变化是否可能?
编辑:Christian Liensberger在他的博客上发表了excellent wrapper for this的内容。答案 1 :(得分:1)
您必须让主线程始终在Console.Read()
(或Console.ReadKey()
)等待,并在另一个线程上进行实际工作。当主线程检测到按键时,它需要以某种方式通知另一个线程暂停或恢复(例如,使用WaitHandle
)。
如果工作线程正在做一些非常简单的事情,并且可以随时暂停它,那么你可以只是暂停/恢复线程而不是做任何通知。
答案 2 :(得分:1)
好的它应该是这样的......
//Assuming the thread name given is 'newthread'
//First Start a thread
newthread.Start();
//use Console Key Class to read a key from keyboard
ConsoleKeyInfo cki = new ConsoleKeyInfo();
cki = Console.ReadKey(true);
//I am using letter 'p' to pause
if (cki.Key == ConsoleKey.P)
{
newthread.Suspend();
Console.WriteLine("Process Is Paused,Press 'Enter' to Continue...");
}
//Thread Resumption can only occur through another thread
//If the thread control has passed on to the main function
//resume it from there
// Resuming Thread if paused
if (newthread.ThreadState>0)
{
ConsoleKeyInfo ckm = new ConsoleKeyInfo();
ckm = Console.ReadKey(true);
if (ckm.Key == ConsoleKey.Enter)
{
Console.WriteLine("Resuming Process...");
newthread.Resume();
}
}
注意:这应该可以正常工作,但实际上你应该同步你的线程。当你运行程序时,它会说暂停和恢复功能已经过时了。它会告诉你同步线程。