在控制台关闭时阻止应用程序退出
本文关键字:应用程序 退出 控制台 | 更新日期: 2023-09-27 18:26:30
我使用AllocConsole()
在winform应用程序中打开控制台。
当控制台关闭时,如何防止应用程序退出?
编辑
完成百分比的更新是我想在控制台中显示的
void bkpDBFull_PercentComplete(object sender, PercentCompleteEventArgs e)
{
AllocConsole();
Console.Clear();
Console.WriteLine("Percent completed: {0}%.", e.Percent);
}
我尝试了richtextBox作为替代
s =(e.Percent.ToString());
richTextBox1.Clear();
richTextBox1.AppendText("Percent completed: " +s +"%");
但我看不到每次更新的完成百分比。只有当它100%完成时才会出现。
有其他选择吗?
我知道这是一个很少弹出的任务,但我也有类似的事情,并决定使用一些技巧。
http://social.msdn.microsoft.com/Forums/vstudio/en-US/545f1768-8038-4f7a-9177-060913d6872f/disable-close-button-in-console-application-in-c
-禁用自定义控制台应用程序上的"关闭"按钮。
您的文本框解决方案也应该有效。这听起来很像你从主线程调用一个函数,这个函数正在占用主线程上的表单,在更新文本框时会让你感到悲伤。考虑创建一个新线程和一个事件处理程序来更新您的文本框,或者使用新线程中的invoke methodinvoker来更新文本框。以下链接来自已回答的关于如何完成此操作的问题。
如何从另一个线程更新主线程中的文本框?
public class MainForm : Form {
public MainForm() {
Test t = new Test();
Thread testThread = new Thread((ThreadStart)delegate { t.HelloWorld(this); });
testThread.IsBackground = true;
testThread.Start();
}
public void UpdateTextBox(string text) {
Invoke((MethodInvoker)delegate {
textBox1.AppendText(text + "'r'n");
});
}
}
public class Test {
public void HelloWorld(MainForm form) {
form.UpdateTextBox("Hello World");
}
}
请参阅此处的答案。如答案中所述,存在no way to stop the application from getting closed.
但作为一种变通方法,您可以在其中一个答案中描述您的own text output solution
。
您可以首先构建接收参数并将其写入控制台的控制台应用程序。将其放置在主应用程序启动的位置。从主应用程序中,您可以先终止进程,然后用新的参数重新打开它
这是祭坛的方式。