generisch, können Sie tun, wie
folgen
- In C# 2012/Net 4.5 Erstellen Sie ein Windows Forms-Anwendungsprojekt namens Lambda1
- In der For m1 Formular, fügen Sie ein Label namens label1
- Drücken Sie F4, um die Form1 Eigenschaften zu öffnen (nicht die label1 Eigenschaften)
- Klicken Sie auf die Ereignisansicht (Symbol mit einem Donner)
- Klicken Sie doppelt auf das Formular Abschlussveranstaltung. Ein Event-Handler wird erstellt.
- Haben Sie nichts dagegen, den Event-Handler für jetzt. Es wird später durch ein anderes ersetzt;
- Wählen und löschen Sie den gesamten Code in Form.cs (Strg-A/Entf-Taste)
- Kopieren Sie den folgenden Code und fügen Sie ihn in Form1.cs ein;
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;
}
}
}
Was dieser Code tun ist:
Ein Timer erstellt wird. Die verstrichene Event Handler
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
wird jeder 1000ms
Die label1.Text in diesem Ereignishandler aktualisiert werden aufgerufen werden. Ohne die Invoke, wird es ein Thread
ausgegeben werden, um die label1.Text mit einem neuen Wert zu aktualisieren, wurde der Code
verwendet
c = (Int32)(label1.Invoke(y = (x1, x2) => { label1.Text = (x1 +
x2).ToString(); x1++; return x1; }, c,d));
Bitte beachten Sie, dass c und d sind übergeben als Argument an x1 und x2 in der Invoke-Funktion und x1 wird im Invoke-Aufruf zurückgegeben.
Die Variable d wurde in diesen Code eingefügt, um anzuzeigen, wie mehr als eine Variable übergeben wird, wenn Invoke aufgerufen wird.