Threadsafelogeventhandler

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

  1. Num2

    Num2 New Member

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

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

    1й класс

    Код (Text):
    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й класс

    Код (Text):
    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);
    }
     

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