小弟给意大利一家公司的国内研发中心做了一个软件,用C#写的,采用的是盗版的vs2003中文版,在自己机子上和他们国内的研发中心(安装的是win2000英文版)运行完全正常,但是到意大利那边当打开某个Form时,对话框就被挂起了没有反应了。
我看了看这个对话框与其他的区别可能就是其他线程需要调用该Form的一些方法,我采用的是
if( InvokeRequired == false )
DoSome();
else
Invoke( new DoSomeInvoker(DoSome), new object[] {value} );
的方式。
请问那位高手能给小弟指点一二,不胜感激
我看了看这个对话框与其他的区别可能就是其他线程需要调用该Form的一些方法,我采用的是
if( InvokeRequired == false )
DoSome();
else
Invoke( new DoSomeInvoker(DoSome), new object[] {value} );
的方式。
请问那位高手能给小弟指点一二,不胜感激
解决方案 »
- datagridview 怎么该序号列的宽度
- 窗体填充到panel中的问题
- 如何在后台实现排班的安排,给个思路也行,主要是数据库的设计方面
- 我的C#怎么不能新建ASP.NET Web应用程序!!
- 高分求救(100分),Access2003与Winform取得的数据不一样.重新发
- 50分求问高手:如何在导入Excel时屏蔽掉OpenFileDialog 对话框?
- 高分!!在线等,关于汉字的hex编码格式的c#实现
- 请问:如何在.NET中调用DLL中的非托管函数
- C#初学者的问题,谢谢指教
- Dotnetfx.exe 怎么样和安装程序一起重新发布???
- 关于EXCEL输出的问题??????????
- 最近MS下载的文件扩展名为.img请问用什么软件打开?那里可下载这个软件呢?
DoSome();
else
{ //用异步委托
//举个例子
ShowDelegate showText = new ShowDelegate(Show);
this.BeginInvoke(showText, new object[]{ ... }); //...代表Show方法参数
}
public delegate void DoQueueDialogInvoker(Form form);
DialogResult _dialogResult=DialogResult.Cancel;
public DialogResult ShowDialog(Form form)
{
_dialogResult=DialogResult.Cancel;
if( InvokeRequired == false )
{
DoShowDialog(form);
}
else
Invoke( new DoQueueDialogInvoker(DoShowDialog), new object[] {form} );
return _dialogResult;
}
private void DoShowDialog(Form form)
{
_dialogResult=form.ShowDialog();
return ;
}
这样在不同的系统下会不会有问题
否则很多错误你靠经验来猜测是很难的,但一调试你可能马上就知道是错在什么地方了。
一 你是不是把里面的异常使用了try和catch,但没有throw出来?如果这样,可能就是在打开新窗体发生了异常,但是没有运行完毕就发生错误,但被你隐藏了起来;
二 死循环?