こんにちは、私は自分のウェブサイト用に作成したプログラムを持っています。コードの激しい部分が別のスレッドで実行されるように更新しようとしていました。新しいスレッドは、メイン GUI スレッドの子コントロールとしてコンテナー内に配置する必要があるいくつかのコスチューム コントロールを作成しますが、コードを実行するたびに、「別のスレッドのため、呼び出し元のスレッドはこのオブジェクトにアクセスできません」というエラーが表示されます。所有しています」。このエラーをスローした後のデバッガーは、[ if (FileStack.Dispatcher.CheckAccess()) ] の下のコード部分を強調表示します コードを実行するたびに、プログラムはコントロールを呼び出そうとします。これが私のコードです
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);
}