c#表单应用程序标签不更新
本文关键字:更新 标签 应用程序 表单 | 更新日期: 2023-09-27 18:10:49
大家好,这是我向stackoverflow提出的第一个问题,很抱歉我的英语不好。我找了一个星期也没找到解决办法。我正在做一个使用射频识别天线和标签的项目。机器读取标签并产生标签id,如bcbc0000或abab1111…每个id指向一个独特的产品,如衬衫,裤子等。这个程序是一个产品计数器。我的表单应用程序使用这个id与产品的匹配并对它们进行计数。当程序获得衬衫id时,我想在读取时增加表单上的"衬衫计数标签"。我写了2个不同的程序,都没有更新标签。
my codes:
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Interval = 2000;
aTimer.Start();
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
阅读部分如下;
reader.Connect(SolutionConstants.ReaderHostname);
Settings settings = reader.QueryDefaultSettings();
settings.Report.IncludeFastId = true;
settings.Report.IncludeAntennaPortNumber = true; // WS
settings.Antennas.GetAntenna(1).MaxTransmitPower = true;
settings.Antennas.GetAntenna(1).MaxRxSensitivity = true;
settings.Antennas.GetAntenna(2).MaxTransmitPower = true;
settings.Antennas.GetAntenna(2).MaxRxSensitivity = true;
...... and other settings here....
// Apply the newly modified settings.
reader.ApplySettings(settings);
// Assign the TagsReported event handler.
// This specifies which method to call
// when tags reports are available.
reader.TagsReported += OnTagsReported;
// Start reading.
reader.Start();
在ontagsreporting()函数中我做了一些控制,重要的部分是
tagList.Add(tag.Epc.ToString()); // adds tags to tagList.
定时器功能;
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
for (int i = 0; i < tagList.Count; i++)
{
if (!usedTags.Contains(tagList[i]))
{
//MessageBox.Show("");
label1.Text = "Text Updated.";
//productCounter(tagList);
usedTags.Add(tagList[i]);
}
}
}
一切正常。程序最后进行控制。如果我在那里写一个messageBox,它会显示,但在下一行标签不会改变。谢谢你的帮助:)
System.Windows.Forms.Timer
代替System.Timers.Timer
可以帮助你。
System.Timers.Timer
在非ui线程中触发事件,所以你不应该在事件处理程序中直接访问UI控件
似乎需要封送对UI线程的调用。
label1.BeginInvoke(new Action(() => label1.Text = "Text Updated"));