GTK удалить событие - PullRequest
       9

GTK удалить событие

0 голосов
/ 01 января 2012

Я использую GTK # и мне нужно прервать поток, когда главное окно закрыто.Нить прикреплена к внутреннему виджету основного виджета.Я пытался использовать удаление и уничтожение событий.Я потерпел неудачу.

public class MyClass {

        GLWidget widget= new AnyWidget();

        public GLWidget widget{
            get { return widget; }
        }
        private float red = 0.0f;

        public MyClass ()
        {
            Thread producer = new Thread (new ThreadStart (ThreadRun));
            producer.Start ();
            widget.DeleteEvent += delegate { // I don't know what event I should use
                producer.Abort ();
            };
        }

        public void ThreadRun()
        {
                    while (true) {
                 //TODO
                    }
        }
    }

Проблема в том, что когда я нажимаю кнопку закрытия, мое приложение GTK # не закрывается.

1 Ответ

0 голосов
/ 28 апреля 2013

объявите ваш поток производителя как открытый член класса.

public class MyClass {
            public Thread producer = new Thread (new ThreadStart (ThreadRun));
//... 

}

, затем вы должны добавить обработчик событий, как показано ниже:

protected void OnDeleteEvent (object sender, DeleteEventArgs a)
{
    producer.Abort ();
}

, наконец, просто назначьте еговаше событие

widget.DeleteEvent +=OnDeleteEvent;
...