如何创建线程 (cs结构)利用扫描枪,扫描读取数据过程中,如何利用线程,同时弹出“数据正在读取”对话框,怎么实现!谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MSDN上搜索Thread就可以了然后看看Lock()的用法使用对话框弹出你想要的 利用扫描枪,扫描读取数据过程中这个我不知道用什么组件,但是用多线程,在你读时,你甚至可以给一个进度条,给你一个例子 int Digits = 100; void CalcPiThread() { CalcPi(Digits); } private void button1_Click(object sender, EventArgs e) { Thread piThread = new Thread(new ThreadStart(CalcPiThread)); piThread.Start(); } void ShowProgress(string pi, int totalDigits, int digitSofar) { if (this.InvokeRequired == false) { this.textBox1.Text = pi; this.progressBar1.Maximum = totalDigits; this.progressBar1.Value = digitSofar; } else { ShowprogressDelegate showprogress = new ShowprogressDelegate (ShowProgress); this.BeginInvoke(showprogress, new object[] { pi, totalDigits, digitSofar }); } } // string ninediitsofpi = "141592653"; int Getnine(int i) { Thread.Sleep(2000); return (i); } void CalcPi(int digits) { StringBuilder pi = new StringBuilder("3", digits + 2); ShowProgress(pi.ToString(), digits, 0); if (digits > 0) { pi.Append("."); for (int i = 0; i < digits; i += 9) { int ninedigits = Getnine(i + 1); int digitCount = Math.Min(digits - i, 9); string ds = string.Format("{0:D9}", ninedigits); pi.Append(ds.Substring(0, digitCount)); ShowProgress(pi.ToString(), digits, i + digitCount); } } } 在“数据正在读取”对话框中启动新的线程,在线程函数中操作扫描枪即可。另外推荐使用Backgroudwork,可以向ui线程发消息,避免线程操作ui的错误。如不清楚,请自己google之 谢谢楼上,读取数据时,扫描枪直接扫到textbox上就可以了,但是由于所扫描的内容很长,所以希望在往文本框扫值的过程中,弹出一个进度条,怎么实现呢?万分感谢…… 其他的楼上说的都很明白了,功能实现都没什么问题,补充下,进度条滚动及其一些显示操作不要在硬中断中操作,这样可能会阻塞串口,可以设置一个标志位来指定什么时候做什么操作,用个timer刷新来执行. wpf TextRange.save() 保存成RTF 乱码 visual studio2005不提示了 如何得到当前连接到SQL的Session_id 如何暂时“抑制”SelectedIndexChanged事件? 访问xml 数据库疑难问题(没有跳错,数据也没有添加进去) 怎样去掉字符串后面的三个字符?急呀! c#超大图像如何实现分块动态装载到pictrue控件中 知道日期怎么判断 星期几? 我下了vs.net beta2,不过是ISO结尾的,怎么解开? c#:spread控件问题 请问什么叫运算符重载,为什么要重载呢?
然后看看Lock()的用法
使用对话框弹出你想要的
这个我不知道用什么组件,
但是用多线程,在你读时,你甚至可以给一个进度条,给你一个例子
int Digits = 100; void CalcPiThread()
{
CalcPi(Digits);
}
private void button1_Click(object sender, EventArgs e)
{
Thread piThread = new Thread(new ThreadStart(CalcPiThread));
piThread.Start();
} void ShowProgress(string pi, int totalDigits, int digitSofar)
{ if (this.InvokeRequired == false)
{
this.textBox1.Text = pi;
this.progressBar1.Maximum = totalDigits;
this.progressBar1.Value = digitSofar;
}
else
{
ShowprogressDelegate showprogress = new ShowprogressDelegate
(ShowProgress);
this.BeginInvoke(showprogress, new object[] { pi, totalDigits, digitSofar });
} }
// string ninediitsofpi = "141592653";
int Getnine(int i)
{
Thread.Sleep(2000);
return (i);
}
void CalcPi(int digits)
{
StringBuilder pi = new StringBuilder("3", digits + 2);
ShowProgress(pi.ToString(), digits, 0); if (digits > 0)
{
pi.Append(".");
for (int i = 0; i < digits; i += 9)
{
int ninedigits = Getnine(i + 1);
int digitCount = Math.Min(digits - i, 9);
string ds = string.Format("{0:D9}", ninedigits);
pi.Append(ds.Substring(0, digitCount));
ShowProgress(pi.ToString(), digits, i + digitCount); }
}
}