gpt4 book ai didi

C# TPL 每秒更新一次 Gridview

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:51 25 4
gpt4 key购买 nike

我有一个数据 GridView ,我需要每秒从数据库中刷新一次。我已经编写了这段代码,这样我的 UI 就不会卡住并且数据获取操作在后台运行,但它仍然会卡住/滞后我的 UI。我需要你的专业知识来让我知道我在这里犯了什么错误。

我有一个主窗体,我将其命名为 Symbols。

Symbols childForm1 = new Symbols();
childForm1.MdiParent = this;
this.SplitContainer2.Panel1.Controls.Add(childForm1);
childForm1.Dock = DockStyle.Fill;
childForm1.Show();

符号形式的代码 -->

public DataSet Result { get { return (DataSet)this.dataGridView1.DataSource; } set { this.dataGridView1.DataSource = value.Tables[0]; } }

private Task<DataSet> StartBackgroundWork()
{
return new WorkItem().DoWork();
}
private void Form_Load(object sender, EventArgs e)
{
System.Windows.Forms.Timer MyTimer = new System.Windows.Forms.Timer();
MyTimer.Interval = (1000);
MTimer.Tick += MyTimer_Tick;
MyTimer.Start();
}
private void MyTimer_Tick(object sender, EventArgs e)
{
this.StartBackgroundWork()
.ContinueWith((t) => this.Result = t.Result, TaskScheduler.FromCurrentSynchronizationContext()); ;
}
public class WorkItem
{
public Task<DataSet> DoWork()
{
return Task.Factory.StartNew<DataSet>(this.PerformWork);
}

private DataSet PerformWork()
{
DataSet dt = new DataSet();
ServiceReference1.tblOrder obj = new ServiceReference1.tblOrder();
obj.order_id = login.client_id;
ServiceReference1.Service1Client objService = new ServiceReference1.Service1Client();
dt = objService.symboldata(obj);
return dt;
}
}

最佳答案

使用 BackgroundWorker 类来避免 ui 卡住。

关于C# TPL 每秒更新一次 Gridview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19465345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com