begininvoke了的线程想立即强行终止,有啥办法啊? begininvoke了的线程想立即强行终止,有啥办法啊??现在begininvoke写在按钮里,调用数据检索和显示,是为了显示光滑,但是反复按了的话,还是会有多次填充,出现奇怪问题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不光是按钮里有,按钮是一个比喻。现在有listbox里面一大堆月份排的日期,点了以后,右边grid显示明细。数据太多我就用begininvoke在另一线程装,又能光滑反应listbox的被选中情况。但是如果来回狂点,很快grid里就乱了,各个日期的数据都有了。 哪位大侠能告诉我啊,希望第二次invoke的同时,强行停止第一次。。开始试过加flag,但是连续点之后,上一次的finally像是进不去,flag不变。。 一点想法:Thread t = null;Boolean isRunning = false;Method(){ if (isRunning) { try { t.Abort(); } catch { } } dataGridView1.Rows.Clear(); isRunning = true; //后面就是用t指定你的方法然后运行了,在你的方法的最后面写上isRunning = false}BeginInvoke调用Method即可 但是t怎么启动呢?我现在没有用thread这个类,直接delegate绑定方法的address来呼出的。。 IAsyncResult ar=this.BeginInvoke(...方法 A...);...void button1_Click(object sender, EventArgs e){ ar.AsyncWaitHandle.Close(); }然后在方法 A里用try{}catch (ObjectDisposedException e){}吃掉Close引发的ObjectDisposedException异常 IAsyncResult 关键是要用到这个.可以判断是否完成.等操作 IAsyncResult 是可以判断,但是现在是不知道如何关闭。刚才试了 ar.AsyncWaitHandle.Close(); 并不能光滑即时地关闭,画面上的listbox可以狂点,会有好多个新的invoke出来,我想保留最新的一个,其他的要立即停掉。 C# 委托与事件求助 httpwebrequest请求的问题 C# winform ListView 禁用checkbox 急,在线等,谢谢,大侠们快进 疑难!高手请 100分 急!急 局域网内教师机如何监控学生机屏幕? 变量类型转换的问题 进度条问题,顶者有分 WPF新手求助 !请教,在.net中的工具箱中Web窗体内的控件和HTML中的控件有什么区别? 请教大家如何控制输入框光标的位置 如何捕获另一个方法的异常
现在有listbox里面一大堆月份排的日期,点了以后,右边grid显示明细。数据太多我就用begininvoke在另一线程装,又能光滑反应listbox的被选中情况。
但是如果来回狂点,很快grid里就乱了,各个日期的数据都有了。
开始试过加flag,但是连续点之后,上一次的finally像是进不去,flag不变。。
Thread t = null;
Boolean isRunning = false;Method()
{
if (isRunning)
{
try
{
t.Abort();
}
catch { }
}
dataGridView1.Rows.Clear();
isRunning = true;
//后面就是用t指定你的方法然后运行了,在你的方法的最后面写上isRunning = false
}BeginInvoke调用Method即可
...
void button1_Click(object sender, EventArgs e)
{
ar.AsyncWaitHandle.Close();
}然后在方法 A里用
try
{
}
catch (ObjectDisposedException e)
{
}
吃掉Close引发的ObjectDisposedException异常
刚才试了 ar.AsyncWaitHandle.Close(); 并不能光滑即时地关闭,画面上的listbox可以狂点,会有好多个新的invoke出来,我想保留最新的一个,其他的要立即停掉。