簡體   English   中英

C#多線程形式的AccessViolationException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM