2013-04-30 2 views
0

Я забочусь о потоке GUI части программного обеспечения.Invoke и BeginInvoke вызываются, но не разрешаются

Я должен отображать внутри данных gridview, которые необходимо постоянно опросить из базовых API.

Я создал метод Sync(), который обновляет данные, и я попытался сделать его потокобезопасным с помощью BeginInvoke и/или Invoke. Метод Sync вызывается таймером каждые 5 секунд или около того.

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

Ниже приведен код:

public void Sync() 
    { 
     if (this.InvokeRequired) 
     { 
      logger.Debug("Begin Invoke of Sync operation"); 
      this.Invoke(new SyncDelegate(Sync)); 
      logger.Debug("End Invoke of Sync operation"); 
     } 
     else 
     { 
      logger.Debug("Inside body"); 
     } 

    } 

Журнал выглядит следующим образом:

10:00:00 Begin Invoke of Sync operation 
... other stuff ... 
10:00:05 Begin Invoke of Sync operation 
... other stuff ... 
10:00:10 Begin Invoke of Sync operation 

другие сообщения никогда не печатаются.

То же самое для BeginInvoke. «End Invoke ...» напечатан, но «внутреннее тело ...» никогда не печатается.

Я бегу сверху на единство3d и моно. (Если это меняет что-нибудь)

Спасибо всем, кто будет оказывать помощь :)

ответ

0

решаемая. По-видимому, я создавал Windows Form вне команды Application.Run. По какой-то причине создание экземпляра формы внутри приложения. Команда Run сделала трюк

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