c# 多线程界面卡顿_C# Winform使用线程,委托定时更新界面UI控件,解决界面卡顿问题...

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Net;

using System.Net.Sockets;

using System.Text;

using System.Threading;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace SampleNotice

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

Thread t = new Thread(new ThreadStart(GetData));

t.IsBackground = true;

t.Start();

}

private void GetData()

{

var timer = new System.Timers.Timer();

timer.Interval = 1000;

timer.Enabled = true;

timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);

timer.Start();

timer.Elapsed += (o, a) =>

{

SetData();

ShowMessage(string.Format("更新时间:" + DateTime.Now));

};

}

//声明委托

private delegate void SetDataDelegate();

private void SetData()

{

if (this.InvokeRequired)

{

this.Invoke(new SetDataDelegate(SetData));

}

else

{

label1.Text = string.Format("更新时间:" + DateTime.Now);

}

}

//声明委托

private delegate void ShowMessageDelegate(string message);

private void ShowMessage(string message)

{

if (this.InvokeRequired)

{

ShowMessageDelegate showMessageDelegate = ShowMessage;

this.Invoke(showMessageDelegate, new object[] { message });

}

else

{

txtbox.Text = message;

}

}

}

}

你可能感兴趣的:(c#,多线程界面卡顿)