私は C# で開発されたアプリケーションを 1 つと、シリアル通信に使用している C# dll を 1 つ持っています。10 秒ごとに dll から GUI を更新し、dll からメイン プログラムにステータス メッセージを送信したいと考えています。
callback はおそらくこれのオプションです。しかし、正しく書くことができません。
誰かが私に適切な構文を教えてくれれば、それは素晴らしいことです。
したがって、これは単なる例です。まず、イベントを公開する 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
}
}