일반적를
를 따를 때, 당신은 할 수있다
- C# 2012/Net 4.5에서 Lambda1이라는 Windows Forms 응용 프로그램 프로젝트 만들기
- In For M1 양식으로 Form1 속성 (안 LABEL1 속성) 이벤트에
- 클릭 볼 (천둥과 아이콘) 폼 닫기 이벤트에
- 더블 클릭을 열
- 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;
}
}
}
어떤이 코드가 수행하는 것은 :
타이머가 생성됩니다. 경과 이벤트 처리기
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
마다 1000MS
가 label1.Text이 이벤트 핸들러 내부에 업데이트됩니다 호출됩니다. 인보하지 않고, 새로운 값으로 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가 삽입되었습니다.