Генерация события в отдельном потоке
От: sieben  
Дата: 18.02.05 17:52
Оценка:
Всем привет.



У меня такая ситуация:



Есть класс, к примеру обычная форма:

    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.MainMenu mainMenu1;

        public Form1()
        {
            InitializeComponent();
        }

        protected override void Dispose( bool disposing )
        {
            base.Dispose( disposing );
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.mainMenu1 = new System.Windows.Forms.MainMenu();
            // 
            // Form1
            // 
            this.Menu = this.mainMenu1;
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);

        }
        #endregion

        #region Connection listener
        public static event EventHandler ConnectionChanged;
        private static bool m_stopThread = false;


        public static void CheckConnection() {
            while(!m_stopThread) {
                ConnectionChanged(null, EventArgs.Empty);
                Thread.Sleep(5000);
            }
        }
        
        public static void CreateConnectionChecker() {
            m_stopThread = false;
            ThreadStart threadStart = new ThreadStart(CheckConnection);
            Thread thread = new Thread(threadStart);
            thread.Start();
        }

        public static void DropConnectionChecker() {
            m_stopThread = true;
        }
        #endregion //Connection listener


        static void Main() 
        {
            Application.Run(new Form1());
        }

        private void Form1_Load(object sender, System.EventArgs e) {
            CreateConnectionChecker();

        }
    }




Выделенный регионом "Connection listener" кусок кода создает простой поток, который каждые 5 сек. генерирует событие. Простое пустое, никем не перехватываемое событие.



Я столкнулся с такой проблемой, что при генерации события выпадает исключение: MissingMethodException Form1::CheckConnection+0x12



Помогите, пожалуйста, решить эту проблему.



Заранее благодарен.



С уважением,sieben.
Re: Генерация события в отдельном потоке
От: sugarde  
Дата: 21.02.05 19:02
Оценка:
Здравствуйте, sieben, Вы писали:

ConnectionChanged — делегат т.е. облагороженый указатель на метод и всё. Его надо присвоить, а перед вызовом на ноль проверить.
Да, по ходу, не забывайте, что все вызовы к GUI надо будет перемаршалить на GUI-thread.
В жизни кaждoгo челoвекa бывaют приятные мoменты, кoгдa oн чувствует себя пoлным идиoтoм. Приятнoсть этих мoментoв в пoстижении истины.
Re[2]: Генерация события в отдельном потоке
От: sieben  
Дата: 21.02.05 19:05
Оценка:
Здравствуйте, sugarde, Вы писали:

S>Здравствуйте, sieben, Вы писали:


S>ConnectionChanged — делегат т.е. облагороженый указатель на метод и всё. Его надо присвоить, а перед вызовом на ноль проверить.

S>Да, по ходу, не забывайте, что все вызовы к GUI надо будет перемаршалить на GUI-thread.

Спасибо, я попробую.

С уважением,
sieben.
Re: Генерация события в отдельном потоке
От: Dog  
Дата: 22.02.05 08:51
Оценка:
S>Я столкнулся с такой проблемой, что при генерации события выпадает исключение: MissingMethodException Form1::CheckConnection+0x12
S>Помогите, пожалуйста, решить эту проблему.
Обычно такая ошибка выскакивает если пытаешься использовать метод/класс, который не поддерживается CF. Тут совет только один — почаще заглядывать в MSDN
Где-то между собакой и богом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.