Модальное окно или MessageBox из не основного потока
От: horn Россия  
Дата: 24.12.11 13:31
Оценка:
Доброго...

namespace test_thread_window
{
    public partial class MainForm : Form
    {
        private Thread someThread;
        private threadclass work;
        
        public MainForm()
        {
            InitializeComponent();

            work = new threadclass();
            //work.UserRequestEvent += new threadclass.UserRequest(OnUserRequest);

            someThread = new Thread(new ThreadStart(work.DoWork));
            someThread.Start();
        }

        /*
        void OnUserRequest(object sender, EventArgs e)
        {
            MessageBox.Show("Test message.", "Test", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        */ 

        private void MainForm_Load(object sender, EventArgs e)
        {
            // ...
        }
    }

    public class threadclass
    {
        public delegate void UserRequest(object sender, System.EventArgs e);
        public event UserRequest UserRequestEvent;
        
        public void DoWork()
        {
            Thread.Sleep(1000);
            //UserRequestEvent(this, new EventArgs());

            // здесь нужно вызвать MessageBox
            // ...
        }
    }

}


Сабж.

ЗЫ: Если раскомментировать код, то MessageBox будет виден, но он не будет обладать свойством модальности (если так можно выразиться ).
c# .net thread winforms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.