Я унаследовал код, в котором BeginInvoke вызывается из основного потока (а не фонового потока, который обычно является шаблоном). Я пытаюсь понять, что он на самом деле делает в этом сценарии.Последствия для работы BeginInvoke
Вызывается ли метод, вызываемый в BeginInvoke, в строке сообщений, которые попадают в окно? Документы говорят asynchronously
, так что это мое предположение.
Как фреймворк определяет приоритеты, когда следует начинать метод, называемый BeginInvoke?
Edit: код выглядит следующим образом:
System.Action<bool> finalizeUI = delegate(bool open)
{
try
{
// do somewhat time consuming stuff
}
finally
{
Cursor.Current = Cursors.Default;
}
};
Cursor.Current = Cursors.WaitCursor;
BeginInvoke(finalizeUI, true);
Это происходит в случае Form_Load.
@ Джона Кноллера, вы говорите, что в моем сценарии BeginInvoke несет вес контекста контекста потока? – AngryHacker
@AngryHacker: Нет, теперь, когда вы показали свой код, ясно, что это только PostMessage, как описано в JaredPar, ваш BeginInvoke - это метод в форме и, таким образом, будет _not_ запускать делегат в отдельном потоке. –