0

カスタム組み込みハードウェアを使用してすべての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
    }
4

1 に答える 1

1

構文糖

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
   }
}
于 2009-10-13T09:31:36.933 に答える