【发布时间】:2018-03-23 17:10:04
【问题描述】:
我在 C# 中有一个表单应用程序,它可以在 UI 线程上完成它需要的所有操作。它在计算上并不昂贵,但相当耗时,因为它等待来自其他系统的响应并在此期间锁定 UI。
下面是我日常的一个sn-p。
private void btnRun_Click(object sender, EventArgs e)
{
TextAppend("Checking Laser Marker TCP/IP...");
foreach(string t in Steps)
{
var itm = new ListViewItem(t);
listView1.Items.Add(itm);
}
listView1.Items[0].BackColor = Color.PaleGoldenrod;
progressBar1.Value = 0;
LabelShows(1);
//Check the TCP/IP connection
progressBar1.Value = 21;
bool checkIP = RunModule.CheckConnection("GI SN", IP, port, this);
if (checkIP == false)
{
listView1.Items[0].BackColor = Color.Red;
MessageOK("Failed to connect to the Laser Marker! Please check IP, Port and serial numbers match the Laser marker.", "warn");
LabelShows(0);
return;
}
}
部分:
bool checkIP = RunModule.CheckConnection("GI SN", IP, port, this);
if (checkIP == false)
{
listView1.Items[0].BackColor = Color.Red;
MessageOK("Failed to connect to the Laser Marker! Please check IP, Port and serial numbers match the Laser marker.", "warn");
LabelShows(0);
return;
}
在具有不同功能的例程中以类似的方式多次发生。所有函数都从不同的类运行。
我研究过使用后台工作人员,但这些报告进度而不是布尔值。我看过Task.Run(),但我看不到实现它的方法。谁能提供关于如何更好地安排我的日常工作的建议?
【问题讨论】:
标签: c# asynchronous