首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

难题, 跨线程窗口调用!该怎么解决

2011-12-27 
难题, 跨线程窗口调用!在给客户做的一个程序中附带一个聊天程序,若先在主窗口创建聊天窗口,一切正常,但消

难题, 跨线程窗口调用!
在给客户做的一个程序中附带一个聊天程序,   若先在主窗口创建聊天窗口,   一切正常,   但消息触发创建的窗口,   主程序在调用时,   出现跨线程控件调用错误,   怎么处理,   谢谢拉!!!!!

[解决办法]
你这里边还有一个问题:

生成ChatRoom也需要在主线程上,也就是说 CreateChatRoom()也要在主线程上运行,这样改:

public void ShowChatRoom()
{

//myControl: 是一个主线程上生成的Control
/在这里实际上不用判断 if (room.InvokeRequired)
myControl.Invoke(new EmptyMethod(CreateChatRoom));

}


//把Show(); 和 BringToFront(); 也加到这里边去.
public ChatRoom CreateChatRoom()
{
if (chatRoom == null)
{
chatRoom = new ChatRoom(repeater.UserID, repeater.UserName, server);
chatRoom.Disposed += new EventHandler(chatRoom_Disposed);
chatRoom.Show();
chatRoom.BringToFront();
}
return chatRoom;
}

[解决办法]
那就不要用show了。就这样
ChatRoom room = CreateChatRoom();
room.Show();
Application.Run(room);
[解决办法]
是不是 另外一个线成的方法修改住线程的控件? 那 的转回主线程执行
[解决办法]
用一个委托沟上.然后到主线程执行
[解决办法]
把需要的资源作成全局的 就可以了

或者用REF把对象传进去啊
这么简单的问题

热点排行