嗨,我有一個我爲我的網站創建的程序,我試圖更新它,以便代碼的激烈部分將運行在單獨的線程中。新線程創建了幾個服裝控件,我需要將它們放在容器內作爲主GUI線程上的子控件,但是每當我運行代碼時,我都會收到此錯誤「調用線程無法訪問此對象,因爲不同的線程擁有它「。拋出此錯誤後的調試器突出顯示了[if(FileStack.Dispatcher.CheckAccess())]下的代碼部分每次我運行代碼並且程序試圖調用該控件時。 這裏是我的代碼如何調用服裝控件並將其添加到控件使用c#的兒童WPF
public delegate void ADDFiLEHandel(FileControlxaml File);
public void ADDFiles(FileControlxaml File)
{
if (FileStack.Dispatcher.CheckAccess())
{
FileStack.Children.Add(File); //this is the code that gets height-lighted by the debugger
}
else
{
FileStack.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new ADDFiLEHandel(ADDFiles), File);
}
然後調用來自新的線程,我不得不設置線程的狀態STA,我做錯了什麼伊夫像這樣的調用花了幾個小時試圖讓這項工作。
public void createfilethread(object data)
{
FileControlxaml NewFile = new FileControlxaml();
NewFile.Title = "Hellow World";
ADDFiles(NewFile);
}
什麼是'FileStack'? – CodingGorilla
FileStack是一個StackPanel控件 – FileStreamers