1

私は C# で開発されたアプリケーションを 1 つと、シリアル通信に使用している C# dll を 1 つ持っています。10 秒ごとに dll から GUI を更新し、dll からメイン プログラムにステータス メッセージを送信したいと考えています。

callback はおそらくこれのオプションです。しかし、正しく書くことができません。

誰かが私に適切な構文を教えてくれれば、それは素晴らしいことです。

4

2 に答える 2

1

したがって、これは単なる例です。まず、イベントを公開する DLL からのコード。

class MyWorkerClass
{
  public event EventHandler<System.ComponentModel.ProgressChangedEventArgs> Changed;

  void OnChanged(ProgressChangedEventArgs args)
  { 
     if (Changed != null) Changed(this, args);
  }

  public void DoWork(object state)
  {
     // do your work
     OnChanged(new ProgressChangedEventArgs(50, state);   // use percentage
  }
}

そしてあなたのGUIのコード。

public class MyGUI
{
   readonly MyWorkerClass worker;

   public MyGUI()
   {
      this.worker = new MyWorkerClass();
      this.worker.Changed += OnWorkerChanged;
   }

   public void OnWorkerChanged(object sender, ProgressChangedEventArgs args)
   {
      // ToDo: use args.ProgressPercentage to update a GUI element (example: ProgressBar)
      // Remark: make sure you are in the GUI thread. Use this.InvokeRequired to check
   }
}
于 2013-09-15T15:29:57.860 に答える