У меня проблема с многопоточностью в WPF. Я хочу создать сложный пользовательский интерфейс, а затем добавить его в главное окно. Пока этот сложный пользовательский интерфейс создается, я хочу показать индикатор выполнения в моем главном окне. Я думаю, что это может быть сделано только с потоками. Но есть проблема. Созданный элемент нельзя добавить в главное окно, поскольку он создан в отдельном потоке.
Кто-нибудь знает, есть ли возможность перенести элементы UIE, созданные в фоновом потоке, в основной поток.
Если я пытаюсь простым способом, он говорит, что к объекту нельзя получить доступ, потому что он находится в отдельном потоке. Я уже сделал мою строку прогресса прогрессивной.
Я надеюсь, что следующий пример немного лучше объяснит, что я хочу.
StackPanel tcForm = new StackPanel();
Semaphore loadedSema = new Semaphore(0,1);
Thread thread = new Thread(new ThreadStart(delegate(){
//Formular should be created in background
tcForm.Children.Add(new Formular());
ProgressBar.AddProgress();
//...other things
loadedSema.Release();
}));
thread.start();
loadedSema.WaitOne();
new Formular()
работает очень долго, поэтому я подумал о создании в фоновом режиме.
Также невозможно добавить Formular
в переменную и затем добавить ее в основной поток.
//this is also impossible
//in background-thread
form = new Formular
//in main-thread
tcForm.Children.Add(form);
Я надеюсь, что есть способ для этого.
Было бы неплохо, если есть несколько советов,
Спасибо, Мартин