Re[9]: Проблемы с многопоточностью
От: _Morpheus_  
Дата: 25.09.07 11:31
Оценка:
Здравствуйте, Tyoma Developer, Вы писали:

G>>Попробуй внести код мессадж бокса в метод, для которого вызывается Invoke


TD>Проблема в том, что мне на данном этапе необходимо получить ссылку на объект главной формы, который был создан в другом потоке и не важно где будет располагаться код.


и кто вас учит статики кругом пихать?


private void formMainCheckUpdateProc(bool ShowMessage) 
{
  //...

    if(this.InvokeRequired)
        Invoke(updateRequest, null);
    else
        updateRequest();

    //...
}

private void updateRequired()
{
    // Вот тут мне нужно получить ссылку на главную форму, но т.к. этот метод запушен в другом потоке....
  // Может я зря это делаю, но пока не нашёл другого решения

    
        // без проблем - получай, this - это ссылка на главную форму...
        // более того, этот код будет выполняться из основного потока приложения (того в котором форма создана)


  if (MessageBox.Show(this, "New version of " + System.Windows.Forms.Application.ProductName + " is available" +
                                      "\r\n Do you want to download and update it?",
                                      "New version is available",
              MessageBoxButtons.YesNo,
              MessageBoxIcon.Question) == DialogResult.Yes) {
  //...
  }
}

// вот что-то типа такого я делаю ---------------------------------------
private void FormMain_Load(object sender, EventArgs e) 
{
  m_CheckForUpdateThread = new Thread(new ThreadStart(formMainCheckUpdateProc));
    m_CheckForUpdateThread.IsBackground = true;
  m_CheckForUpdateThread.Start();
}
... << RSDN@Home 1.2.0 alpha rev. 676>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.