2013-10-14 3 views
0

У меня есть настраиваемый контрольный индикатор прогресса, который мне нужно обновить через другой поток .. Кажется, что не существует Invoke, BeginInvoke, InvokeRequired и т. Д., Доступных для настраиваемого элемента управления, есть ли у кого-нибудь идеи о том, как реализовать это в контроль?Как вы добавляете методы Invoke к настраиваемому элементу управления?

ответ

0

Для этого вам нужно будет найти способ Dispatcher.Invoke. У меня есть удобный метод, который оборачивает эту функциональность для меня:

public object RunOnUiThread(Delegate method) 
{ 
    return Dispatcher.Invoke(DispatcherPriority.Normal, method); 
} 

Я использую это так:

UiThreadManager.RunOnUiThread((Action)delegate 
{ 
    // This code will run on the UI thread 
}); 

Обратите внимание, что вам нужно будет использовать правильный Dispatcher объект из потока пользовательского интерфейса, а не один который создается в потоке, отличном от UI. Пожалуйста, просмотрите страницу Dispatcher.Invoke Method на MSDN для получения дополнительной информации об этом.

Пожалуйста, дайте мне знать, если это не то, что вам нужно.

+0

Hi Sheridan, это близко, я хотел бы их обернуть, чтобы они сохраняли ту же сигнатуру вызова, что и на других элементах управления, так что, может быть? public object Invoke (метод Delegate) { return Dispatcher.Invoke (DispatcherPriority.Normal, метод); } Но как бы я обернул RequiresInvoke таким же образом? – JGU

+0

Извините, но что это значит? – Sheridan

+0

Не важно, я это понял .. спасибо Шеридан! – JGU

Смежные вопросы