一般的に、あなたが続く
として行うことができます
- C#2012/Net 4.5でLambda1と呼ばれるWindowsフォームアプリケーションプロジェクトを作成
- In the For M1フォームは、Form1のプロパティ(ないのLabel1のプロパティ)イベントの
- をクリックして、表示(雷とアイコン)フォームClosingイベントに
- ダブルクリックして開くこと
- 押してF4をLABEL1と呼ばれるラベルを挿入します。イベントハンドラが作成されます。
- 今のところ、イベントハンドラについて気にしないでください。後で別のものに置き換えられます。
- Form.csですべてのコードを選択して消去します(Ctrl-A/Deleteキー)
- Form1.csに次のコードをコピーして貼り付けます。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
namespace Lambda1
{
public partial class Form1 : Form
{
System.Timers.Timer t = new System.Timers.Timer(1000);
Int32 c = 0;
Int32 d = 0;
Func<Int32, Int32, Int32> y;
public Form1()
{
InitializeComponent();
t.Elapsed += t_Elapsed;
t.Enabled = true;
}
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
c = (Int32)(label1.Invoke(y = (x1, x2) =>
{ label1.Text = (x1 + x2).ToString();
x1++;
return x1; },
c,d));
d++;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
t.Enabled = false;
}
}
}
何このコードがやっていることは次のとおりです。
タイマーが作成されます。ます。Label1.Textは、このイベントハンドラ内で更新されますすべての1000ミリ秒
Elapsedイベントハンドラ
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
が呼び出されます。起動せずに、新しい値でます。Label1.Textを更新するには
を発行したスレッドが存在します、コードが
c = (Int32)(label1.Invoke(y = (x1, x2) => { label1.Text = (x1 +
x2).ToString(); x1++; return x1; }, c,d));
を使用したC、Dがされご覧ください引数としてInvoke関数のx1とx2に渡され、x1がInvoke呼び出しで返されます。
Invokeが呼び出されたときに複数の変数を渡す方法を示すために、変数dがこのコードに挿入されています。