Как я могу избежать вызова каждого события из моей внешней библиотеки? - PullRequest
0 голосов
/ 13 октября 2009

Я написал библиотеку, которая обрабатывает все соединения TCP / IP с нашим встроенным оборудованием. Он используется с большинством нашего собственного программного обеспечения и в будущем может быть продан отдельно.

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

Есть идеи?

    public Setup(DiscoveryReader reader)
    {
        download = new DownloadFilesIndividual(Reader.ip, DateTime.Today);
        download.OnDownloadStatus += new DownloadStatusHandler(download_OnDownloadStatus);
    }

    void download_OnDownloadStatus(DownloadStatus status)
    {
        Invoke(new DownloadStatusHandler(this.safe_download_OnDownloadStatus), new object[] { status });
    }

    void safe_download_OnDownloadStatus(DownloadStatus status)
    {
        // Do UI stuff here
    }

1 Ответ

1 голос
/ 13 октября 2009

синтаксический сахар

public Setup(DiscoveryReader reader)
{
    download = new DownloadFilesIndividual(Reader.ip, DateTime.Today);
    download.OnDownloadStatus += new DownloadStatusHandler(download_OnDownloadStatus);
}

void download_OnDownloadStatus(DownloadStatus status)
{
   if(InvokeRequired)
   {
    Invoke(new Action<DownloadStatus>(download_OnDownloadStatus),status);
   } else {
   // Do UI stuff here
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...