socket savefiledialog

Learn-anything 2009-07-21 02:44:16
socket通讯过程中,我用的是socket异步通信,

mSocket.BeginReceive(so.buffer, 0, StateObject.BufferSize, 0,
new AsyncCallback(SocketAcceptDataCallback), so);

private void SocketAcceptDataCallback(IAsyncResult iar)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.InitialDirectory = "c:\\";
sfd.Filter = "All File|*.*";

if (sfd.ShowDialog() == DialogResult.OK)
{
.........

}
}


在上面的回调函数中,到if (sfd.ShowDialog() == DialogResult.OK)
这一步就出错了,说是当前线程没有设成 单线程单元(STA)模式。

有什么方法可以解决这个问题,另外socket的创建监听我都是封装在一个单独的类中的。

知道的说下,谢谢

...全文
73 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LQknife 2009-07-23
  • 打赏
  • 举报
回复
跨线程操作组件了 用invoke方法吧
happyboyxq 2009-07-23
  • 打赏
  • 举报
回复
是不是在多线程操作啊
peterb 2009-07-23
  • 打赏
  • 举报
回复
[STAThread]这个需加在你的main方法上面, 多线程最好不要直接操作ui

参考C# WinForm开发系列 - Thread/Delegate/Event
Learn-anything 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zgke 的回复:]
给类上加上

[STAThread] 特性.
[/Quote]

怎么加啊?我加了这么说只能给“method”声明有效
十八道胡同 2009-07-21
  • 打赏
  • 举报
回复


[STAThread] 特性
STAThreadAttribute 类指示应用程序的 COM 线程模型是单线程单元 (STA)。
我很懒 2009-07-21
  • 打赏
  • 举报
回复
加上[STAThread],应该可以吧
zgke 2009-07-21
  • 打赏
  • 举报
回复
给类上加上

[STAThread] 特性.

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧