C# win form 程序 可以 取消委托吗?有一个form, form load 时,有一个委托,这个委托并不一定需要,(如果, 用户进入界面,不做任何操作,关闭界面,这个委托不需要全部完成).那么,在form closing 时(假设委托未完成) 可以取消委托吗?
解决方案 »
- C#引用类型作为参数传值的一些问题
- 未能加载文件或程序集 “DAL”或它的某一个依赖项。系统找不到指定的文件
- 请问如何使用Window form 中的reportviewer控件
- 自己写的一个发邮件的程序方法,以前是可以发送成功的,但最近出错了.大家进来看看
- 精通C#是什么意思呀
- 使用SQLDMO还原数据库时,如何更改MDF和LDF的物理文件路径?
- 关于datagrid列的数据绑定问题
- 急DataGrid 排序怎么做,给代码吧50分
- 如何在C#中实现和VB中类似的控件数组?
- 看了中文的MSDN,既然能够发现笑话哈哈!
- 如何使PowerPoint 播放时上下颠倒。或者旋转任意角度
- 一个查询异常,55分。
{
if( this.Modified ) //<--类似标志
{
//...
}
}
public static Delegate Invoke(Delegate list,params object[] args)
{
list=Delegate.Remove(list,detachedClient);
return list;
}
两个方法都用过了,委托还是照样执行下去,知道执行完.可以给多点提示吗?private delegate void GetData();
private GetData getA;
private IAsyncResult Iar;
frm_LoadgetA = new GetData(GetDataFunction);
Iar = getARPO.BeginInvoke(new AsyncCallback(OnCompleteGetARPackOrder), getA);
求frm_closing, 代码, 我要停止执行 GetDataFunction 里面的代码.private void frm_FormClosing(object sender, FormClosingEventArgs e)
{
if (!Iar.IsCompleted)
{
//?????
}
}
{
getA = new GetData(GetDataFunction);
}
这样不可以吗?
{
getA = new GetData(GetDataFunction);
}
else
{
getA = ...;
}
不行啊!GetDataFunction 还在执行.
你可以用Event通知的方式结束执行
AutoResetEvent cancelEvent = new AutoResetEvent(false); void GetDataFunction(IAsyncResult are)
{
while(true)
{
if(cancelEvent.WaitOne(0))
{
break;
}
//to do,get data function
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (!Iar.IsCompleted)
{
cancelEvent.Set();
}
}
既然这样,你为什么不考虑不要在Load事件中去执行GetDataFunction,而是当用户真正需要这些数据的时候才去执行你的GetDataFunction,这样我们告知用户需要等待这个这个操作完成合情合理,逻辑上也容易接受.
这个委托处理的数据,并不一定需要啊,用户用到某些操作才需要它处理出来的数据,
Load事件中执行,要用户等死啦....
这个委托处理的数据,并不一定需要啊,用户用到某些操作才需要它处理出来的数据,
不在Load事件中用代理或线程执行,当需要用到时,户等会投诉加载慢...
你既然能够知道某些操作,才需要数据,那么等你执行到某些操作之时,去拿数据就可以了.
不好意思,刚打漏两个字,
我的意思是说:不在Load事件中用代理或线程执行,当需要用到时(某些操作用到数据时),用户会投诉加载慢,要等好长时间.