LoginSignup
0
0

引数が複数あるときのInvoke周りの書き方(C#で

Last updated at Posted at 2023-09-25

目的

完全な備忘メモです。

コード

public delegate void DelegateUpdateForm(string param1, string param2);
private void UpdateForm(string s1, string s2)
{
    if (this.InvokeRequired)
    {
        this.Invoke(new DelegateUpdateForm(UpdateForm),new object[] { s1, s2 });
        return;
    }

    DateTime dt = DateTime.Now;

    this.label1.Text = s1;
    this.label2.Text = string.Format("{0:HH時mm分ss秒fff} {1}", DateTime.Now, s2);
}

コード説明

タイマーやらタスクで別スレッドで動かしているやつから、フォーム上の何かを更新するときに、複数値を渡した上で、スレッドセーフに更新したいときにするやつ。

コード その2

ラムダ式もあるよってコメント頂いたので追加です!(感謝)

private void UpdateForm(string s1, string s2)
{
    if (this.InvokeRequired)
    {
        this.Invoke(() => this.UpdateForm(s1, s2));
        return;
    }

    DateTime dt = DateTime.Now;

    this.label1.Text = s1;
    this.label2.Text = string.Format("{0:HH時mm分ss秒fff} {1}", DateTime.Now, s2);
}

REFERENCEs

さいごに

お疲れ様でした!

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0