0
我正在使用下面的函數關閉現有窗體並打開新窗體。 當代碼試圖關閉現有的形式,我提示以下錯誤:重定向到Windows應用程序c中的另一個窗體#
錯誤:
{System.InvalidOperationException:跨線程操作無效:控制「屏幕保護」從非線程以外的線程訪問它創建於。
代碼:
public static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
StartThread();
Application.Run(new MyContext(new Screensaver()));
}
public class MyContext : ApplicationContext
{
static private Form curMain = null;
public MyContext(Form main)
{
MyContext.NewMainForm(main, false);
}
static public void NewMainForm(Form main, bool ClosePreviousMain)
{
try
{
if (main != null)
{
if (ClosePreviousMain & MyContext.curMain != null)
{
MyContext.curMain.FormClosed -= new FormClosedEventHandler(main_FormClosed);
MyContext.curMain.Close();
}
MyContext.curMain = main;
MyContext.curMain.FormClosed += new FormClosedEventHandler(main_FormClosed);
MyContext.curMain.Show();
}
}
catch (Exception ex)
{
ExceptionHandler.writeToLogFile(System.Environment.NewLine + "Message : " + ex.Message.ToString() + System.Environment.NewLine + "Stack : " + ex.StackTrace.ToString());
}
}
static private void main_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
}
嗨弗雷德裏克·莫克, 關閉形式的作品般的魅力吧。 但在關閉現有表單後顯示錶單時出現問題。 Wats發生的是,我沒有得到任何異常。相反,它打開一個新的過程,而不是打開表單。 進程名稱與新表格名稱相同。 謝謝, – Anuya 2009-06-25 09:22:50