[英]C# Application.Run without Form
是否可以調用Application.Run,但是不傳遞表單參數,或者如果沒有表單可以調用,是否有替代方法?
Run方法似乎沒有任何不接受表單的重載。
例如,如果我想首先實例化一個類,然后調用該表單,那么是否可以執行以下操作:
Application.Run(myClass);
為了澄清,我仍然想要.Run()提供的功能。 也就是說,建立一個循環來保持應用程序運行,但不是跟蹤表單,而是跟蹤類或其他對象。
這最初與緊湊框架有關。 我假設這就是為什么Run方法沒有我想要的重載。
Run方法似乎沒有任何不接受表單的重載。
呃... http://msdn.microsoft.com/en-us/library/ms157900.aspx
Application.Run方法
開始在當前線程上運行標准應用程序消息循環,沒有表單。
public static void Run()
我不清楚你是否願意這樣做:
對於(1) :
static void main()
{
//Your program starts running here<<<
//Do some stuff...
FormRunner a = new FormRunner();
a.RunForm();
} // << And ends here
class FormRunner {
public void RunForm() {
Application.Run(new Form());
}
//You could call which ever form you want from here?
} // << And ends here
你需要知道的是你的程序從main的第一行開始,到最后一行結束。 但是 ,當您調用Application.Run(FORM)
它會為該表單加載一個Windows消息循環 。 它是一個特殊的循環,可以使程序保持在主程序中並等待事件(它們在win32 API中稱為Windows消息)
因此,在用戶單擊關閉按鈕之前,程序不會結束。 當這種情況發生時,那就是當你的程序實際上將從Main return
。
(2)所以現在如果你只想要一個沒有表格的純控制台應用程序:
static void main()
{
AcceptInputs()
DrawScreen()
//Do something else.
//Make sure your flow stays within the main
} // << Once you come here you're done.
void AcceptInputs()
{
while(true) {
//Keep accepting input
break; // Call break when you're done. You'll be back in the main
}
}
我希望有所幫助。
您可以使用Application.Run
的重載,該重載接受應用程序上下文作為其唯一參數。 ApplicationContext
基本上只是一個可以繼承的類,並添加您喜歡的任何功能。 有關詳細信息,請參閱鏈接中的示例。
using System;
using System.Windows.Forms;
static class Program
[STAThread]
static void Main() {
Application.Run(new myClass());
}
internal class myClass : ApplicationContext {
public myClass() {
Application.Run(new myWindow());
}
}
}
但是,這里的問題是,某些東西必須調用myClass的這個實例並告訴它退出,否則程序將在所有窗體關閉后繼續運行。 並忽略在構造函數中調用ExitThread()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.