我现在编写一个读取射频卡的程序 知道form程序中 开启多线程是个麻烦事 就写了如下代码
namespace 邵阳读写卡
{
public partial class Form1 : Form
{ public Form1()
{
InitializeComponent();
if (ccidclasscs.LinkCard())
{ ////这是一段根据设备要求连接读卡器的代码
}
else
{
MessageBox.Show("连接设备失败");
}
} private void Form1_Load(object sender, EventArgs e)
{
///开始启动一个线程准备来调用一个 委托
Thread thread = new Thread(new ThreadStart(f1));
thread.IsBackground = true;
thread.Start();
} private delegate int myInvokeMethod(); private void f1() ///被线程调用的函数
{
myInvokeMethod methodinvoke = new myInvokeMethod(f2);
while ((int)Invoke(methodinvoke) == -1)
{
//这里开始调用委托了
}
} /// ccidclasscs是厂商提供的一个读卡类 打包好的
/// ReadCardData 是用来从指定的RFC卡块区读数据的方法 由于这个方法
/// 不是一个阻塞的方法,我只能用个循环来不断的读数据 这样当用户放上卡后就能读出来
/// GetErr是个读设备错误代码的方法, 当用户没有放上卡的时候 就会丢 “读卡失败” 这种中文信息 private int f2()
{
this.Refresh();
StringBuilder rcarddata = new StringBuilder();
StringBuilder err = new StringBuilder(); ccidclasscs.ReadCardData(rcarddata, 4, 0, "FFFFFFFFFFFF");
ccidclasscs.GetErr(err);
if (err.ToString() == "读卡失败")
{
return -1;
}
if (rcarddata.ToString() != "000000000919")
{
//continue;//卡机上的卡不是管理员的卡,中断这次循环。
return -1;
}
return 0; }
}//类定义结束
}//命名空间定义结束
这个程序能够运行,并且也能够同时相应用户关闭程序的操作,就是当我拖动这个程序的时候,还是感觉程序很卡,感觉程序拖不动, 有什么办法可以让程序对我的操作更加敏感呢???
namespace 邵阳读写卡
{
public partial class Form1 : Form
{ public Form1()
{
InitializeComponent();
if (ccidclasscs.LinkCard())
{ ////这是一段根据设备要求连接读卡器的代码
}
else
{
MessageBox.Show("连接设备失败");
}
} private void Form1_Load(object sender, EventArgs e)
{
///开始启动一个线程准备来调用一个 委托
Thread thread = new Thread(new ThreadStart(f1));
thread.IsBackground = true;
thread.Start();
} private delegate int myInvokeMethod(); private void f1() ///被线程调用的函数
{
myInvokeMethod methodinvoke = new myInvokeMethod(f2);
while ((int)Invoke(methodinvoke) == -1)
{
//这里开始调用委托了
}
} /// ccidclasscs是厂商提供的一个读卡类 打包好的
/// ReadCardData 是用来从指定的RFC卡块区读数据的方法 由于这个方法
/// 不是一个阻塞的方法,我只能用个循环来不断的读数据 这样当用户放上卡后就能读出来
/// GetErr是个读设备错误代码的方法, 当用户没有放上卡的时候 就会丢 “读卡失败” 这种中文信息 private int f2()
{
this.Refresh();
StringBuilder rcarddata = new StringBuilder();
StringBuilder err = new StringBuilder(); ccidclasscs.ReadCardData(rcarddata, 4, 0, "FFFFFFFFFFFF");
ccidclasscs.GetErr(err);
if (err.ToString() == "读卡失败")
{
return -1;
}
if (rcarddata.ToString() != "000000000919")
{
//continue;//卡机上的卡不是管理员的卡,中断这次循环。
return -1;
}
return 0; }
}//类定义结束
}//命名空间定义结束
这个程序能够运行,并且也能够同时相应用户关闭程序的操作,就是当我拖动这个程序的时候,还是感觉程序很卡,感觉程序拖不动, 有什么办法可以让程序对我的操作更加敏感呢???
解决方案 »
- asp.NET 怎样给TextBox添加onkeyup事件并用来调用类(.cs)中方法
- 登录验证,急死我了,都来帮忙啊,在线等啊啊啊啊啊啊啊啊
- C#真的不知道从哪里开始学起,请人指点下吧,谢谢了
- c#做的FORM 调试没有错误 在别人电脑上不能运行
- 组合模式 中 为什么 调用顶层的root.Display(1); 能展开全部 是不是这个函数被多次的执行?
- 程序自启动问题
- 已经向很多高手发了好多希望,在此再下向各位兄弟们讨教下, 无论您意见时候到位,在此都多谢了...
- 弹出窗体的位置问题???????
- 很急,很急,很急--关于treeview问题,100分求教
- 在线等~~急~~在DataGridView的最底下添加一行汇总行~
- printPreviewDialog的问题
- 判断集合内时间是否交叉?
{
//这里开始调用委托了
}在这里面加一个Sleep(100)试试。