黑马程序员技术交流社区

标题: 聊天程序奇怪问题 [打印本页]

作者: 王硕    时间: 2011-12-3 22:42
标题: 聊天程序奇怪问题
我做的聊天程序(最后一套视频的内容)不能传文件(一点发送文件就没有反应了,什么提示也没有),但是放在别人的电脑上就能传,还有别人做好的聊天程序放在我的电脑上就又不能传文件了,很明显是电脑问题,但是问题可能出在哪啊?很怪,关了防火墙杀毒软件都不管用,期待高手解答。。。
作者: 付炯    时间: 2011-12-4 23:03
你是说在接收端不显示保存文件对话框吧 你用的应该是win 7系统吧
上次邹老师提供了这样一种解决方案
  1. //创建负责接收服务端发送来数据的线程
  2. threadClient = new Thread(ReceiveMsg);
  3. threadClient.IsBackground = true;
  4. //如果在win7下要通过某个线程来调用文件选择框的代码,就需要设置如下
  5. threadClient.SetApartmentState(ApartmentState.STA);
  6. threadClient.Start();
复制代码
或者你直接在ShowDialog()方法中传入this也可以 就像这样
  1. if (sdlg.ShowDialog(this) != DialogResult.OK)
  2.     return;
复制代码
这样做的具体原因还要问下老师 目前我也讲不清楚 呵呵
作者: 陆亚    时间: 2011-12-6 12:59
我今天也遇到这种情况,看了一下。大体上是这个原因。ShowDialog有两个重载方法

//用默认的所有者运行通用对话框。
public DialogResult ShowDialog();

// 参数:  owner
// 任何实现 System.Windows.Forms.IWin32Window(表示将拥有模式对话框的顶级窗口)的对象。
public DialogResult ShowDialog(IWin32Window owner);

在Win7同时启动了两个程序,如果使用第一个方法,系统不知道究竟谁是对话框的owner,因此要显式加this,表示当前窗口(即服务端窗口)为对话框的owner,
我觉得这应该是Win7的一个不足。不过无关大局。小bug




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2