В приведенном ниже коде я вызываю метод, который открывает новое пользовательское окно. Однако, когда приложение выполняет некоторую длительную задачу, я все равно хочу активировать окно. Возможно ли это сделать в другом потоке или с помощью класса Task
?WPF открыть новое окно в другом потоке
public static class CustomW
{
static Custom_Window_Chrome_Demo.ThemedWindow MsgBox(string Msgbx_TTL, string Msgbx_Contnt)
{
var w_mbx = new Custom_Window_Chrome_Demo.ThemedWindow();
w_mbx.Width = 950; w_mbx.Height = 159;
w_mbx.Title = Msgbx_TTL;
Grid g = new Grid();
StackPanel spM = new StackPanel();
TextBlock TblckErrMsg = new TextBlock();
//more settings......
}
}
Это, как я пытался вызвать его,
public void newMsgBoxShow(string Msgbx_TTL, string Msgbx_Contnt)
{
System.Threading.Thread s = new System.Threading.Thread(
()=>
CustomW.MsgBox(Msgbx_TTL, Msgbx_Contnt).Show()
);
}
, но когда я использую новую тему я получаю следующее сообщение об ошибке.
Вызывающий поток должен быть STA, так как многие компоненты пользовательского интерфейса требует этого
Что такое правильный путь для достижения требуемого результата?
Где находится долгосрочная задача? –
Ну, вы должны запустить свою длинную задачу на других потоках и оставить основной протектора для пользовательского интерфейса и не тяжелого материала. – Filip
@NicoSchertler длинная задача - поиск длинного кода DB .. –