1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Threadsafelogeventhandler

Тема в разделе ".NET - WinForms", создана пользователем Num2, 17 сен 2013.

  1. Num2

    Num2 New Member

    Репутация:
    0
    Регистрация:
    9 июл 2012
    Сообщения:
    4
    Симпатии:
    0
    Всем привет.
    Скажите, можно ли создавать 2 и более ThreadSafeLogEventHandler событий между 2мя разными классами, чтобы передавать нужную инфу... создал 1 событие - все ок, создаю еще одно такое событие - начинается проблемы: "Несколько аргументов делегата "AfyControls.NotificationCenterWindow.ThreadSafeLogEventHandler" являются недопустимыми"

    Откусил кусок связанный именно с событием... Подскажите, может пропустил что-то..

    1й класс

    Код:
    RemoveMessagePanel event_ = new RemoveMessagePanel(id); 
    OnErrorInLogThread(event_);
    
    LoadMessagePanel Load_event_ = new LoadMessagePanel(AfyEN._AddEventNotification.eventNotificationId); 
    OnLoad(Load_event_);
    
    
    public event ThreadSafeLogEventHandler ThreadSafeLogHandler; 
    
    protected virtual void OnErrorInLogThread(RemoveMessagePanel e)
    {
    if (ThreadSafeLogHandler != null)
    {
    ThreadSafeLogHandler(this, e);
    }
    }
    
    
    public class RemoveMessagePanel : EventArgs
    {
    private string idMsg_;
    
    public RemoveMessagePanel(string id)
    {
    this.idMsg_ = id;
    }
    
    public string ErrorLogThread
    {
    get
    {
    return idMsg_;
    }
    }
    }
    
    /*----------------------------------------------------------*/
    
    public event ThreadSafeLogEventHandler OnNotificationsListLoaded; 
    
    protected virtual void OnLoad(LoadMessagePanel e)
    {
    if (OnNotificationsListLoaded != null)
    {
    OnNotificationsListLoaded(this, e);
    }
    }
    
    
    public class LoadMessagePanel : EventArgs
    {
    private string idMsgload_;
    
    public LoadMessagePanel(string id)
    {
    this.idMsgload_ = id;
    }
    
    public string ErrorLogThread
    {
    get
    {
    return idMsgload_;
    }
    }
    }
    2й класс

    Код:
    notificationCenterWindow1.ThreadSafeLogHandler += new AfyControls.NotificationCenterWindow.ThreadSafeLogEventHandler(OnErrorInLogThread);
    
    notificationCenterWindow1.ThreadSafeLogHandler += new AfyControls.NotificationCenterWindow.ThreadSafeLogEventHandler(OnLoad);
    
    private void OnErrorInLogThread(object sender, AfyControls.NotificationCenterWindow.RemoveMessagePanel e)//Событие при получении ошибки в внутреннем потоке класса ThreadSafeLog
    {
    Invoke(new ShowErrorFromThread(SetErrorLabel), new object[] { e.ErrorLogThread }); 
    MessageBox.Show(e.ErrorLogThread);
    }
    
    private void OnLoad(object sender, AfyControls.NotificationCenterWindow.LoadMessagePanel e)
    {
    Invoke(new ShowErrorFromThread(SetErrorLabel), new object[] { e.ErrorLogThread }); 
    MessageBox.Show(e.ErrorLogThread);
    }
     

Поделиться этой страницей