C#.net 델리게이트
public delegate void Dele();
public Form1()
{
InitializeComponent();
th = new Thread(new ThreadStart(RunThread));
th.Start();
}
void RunThread()
{
Dele de = new Dele(AddControl);
this.Invoke(de);
}
void AddControl()
{
tb = new TextBox();
Controls.Add(tb);
}
public delegate void SetTextCallback (Control control,string text);
private void SetText(Control control, string text)
{
if (control.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { control, text });
}
else
{
control.Text = text;
}
}
Thread _thread;
private delegate void DisplayDateTimeHandler();
private void Form1_Load(object sender, EventArgs e)
{
_thread = new Thread(StartNewThread);
_thread.Start();
}
private void StartNewThread()
{
while (true)
{
if (label1.InvokeRequired)
label1.Invoke(new DisplayDateTimeHandler(DisplayDateTime));
else
DisplayDateTime();
Thread.Sleep(1000);
}
}
private void DisplayDateTime()
{
label1.Text = DateTime.Now.ToString();
}