Принуждение выполнения кода на основном потоке

Вам нужно использовать ajax request и jQuery

Event Name:

Event Type:

Charity Number:

Contact Details:

Location:

Date :

//use cdn google or microsoft

3 ответа

Здесь есть несколько опций:

  • сделать второй поток STA (вы можете сделать это только для своего собственного потока - не для ThreadPool ] threads) - через .SetApartmentState (ApartmentState.STA);
  • посмотреть, если SynchronizationContext.Current не равен нулю; если это так, используйте Send / Post
  • и передайте форму / элемент управления как ISynchronizeInvoke (может не относиться к WPF - я не уверен на 100%)
5
ответ дан 9 December 2019 в 22:39
поделиться

Ваше мышление правильное - чтобы заставить его работать должным образом, вам нужно будет вызвать его из основного потока.

Самый простой способ? Когда вы запускаете основную форму, сохраняйте ссылку в статической переменной, видимой для вашего вызова ShowMessage (). Затем ваш ShowMessage может сделать стандарт:

if(myForm.InvokeRequired)
{
     myForm.Invoke(() => ShowMessage(arg1,arg2,arg3));
     return;
}
.... other code here....
5
ответ дан 9 December 2019 в 22:39
поделиться

Вместо непосредственного отображения окна сообщения, просто отправьте сообщение в основной поток, который сигнализирует основному потоку об отображении окна сообщения.

1
ответ дан 9 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: