[英]AccessViolationException in C# multithreaded form
首先,這是我的第一個C#項目。 我已經在這個項目上工作了大約6個月。
我們有一個winforms程序,它包含一個日志記錄GUI。 為了使程序的其余部分保持響應,我想在一個單獨的線程上創建日志記錄gui,因為在進行大量操作時它可能會非常密集。
這就是我嘗試在新的GUI線程上打開表單的方式。 通常,它可以正常工作並保持主GUI的響應速度。 但是,當激活它時,我們現在隨機獲得一個AccessViolationException( http://pastebin.com/7tLtBSei ),我很茫然。
var thread = new Thread(() =>
{
loggingForm = new LoggingForm(Logger.path);
Application.Run(loggingForm);
});
thread.Name = "LoggingFormGUIThread";
thread.Start();
日志記錄GUI只是批量讀取日志文件,並將其附加到RichTextBox。 它不涉及任何托管代碼。
您需要將線程的單元狀態設置為STA。
thread.SetApartmentState(ApartmentState.STA);
thread.Name = "LoggingFormGUIThread";
thread.Start();
這是許多用戶界面組件(例如RichTextBox
)正常運行所必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.