求救多线程问题

Harrison_2009 2009-08-15 10:48:04
在winForm应用程序中,如何实现多个窗口只用一个线程,多个窗口都是使用那一个线程。。
例如,我做一个用户在线的列表(主程序),其内写了个线程用来监听来自其他用户的信息,我也可以点选列表中的用户与其进行聊天!(只用一个线程监听!)
...全文
110 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Harrison_2009 2009-08-17
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
codelabs 2009-08-16
  • 打赏
  • 举报
回复
不知道你想表达什么国家机密,这么神秘模糊。你的意思是多个控件用一个主线程吧?支持楼上的。
foman 2009-08-15
  • 打赏
  • 举报
回复
异步调用。
textBox.Invoke(Delegate method,
params Object[] args)
Harrison_2009 2009-08-15
  • 打赏
  • 举报
回复
我企望的是主程序中监听到的内容填充到指定的窗口内!例如:每个新建的窗口的text属性都不一样的!主线程中监听到的内容就根据其text进行填充数据!
Harrison_2009 2009-08-15
  • 打赏
  • 举报
回复
哦哦。。没系统看过线程的!
BATTLERxANGE 2009-08-15
  • 打赏
  • 举报
回复
你写多线程,自然互相就不会有影响了,除非你自己要介入
dancingbit 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jutuo2009cs 的回复:]
不好意思,菜鸟不会说话,是在主程序那里写了一个监听的线程,想其他的窗口都不使用。。应该怎样做?
[/Quote]
主窗体启动监听线程,线程启动后就独立运行了,其他窗口怎么使用它?
qqiuzaihui 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jutuo2009cs 的回复:]
不好意思,菜鸟不会说话,是在主程序那里写了一个监听的线程,想其他的窗口都不使用。。应该怎样做?
[/Quote]
晕, 搞不懂了.
wangxiao2008 2009-08-15
  • 打赏
  • 举报
回复
是啊,不用多线程,自然就是一个主线程
mailbao 2009-08-15
  • 打赏
  • 举报
回复
單線程和多線程的概念,檔主似乎沒搞清楚...


-------------------------------------

STA: Single-Thread Apartment, 中文叫单线程套间。就是在COM库初始化的时候创建一个内存结构,然后让它和调用CoInitialize的线程相关联。这个内存结构针对每个线程都会有一个。支持STA的COM对象只能在创建它的线程里被使用,其它线程如果再创建它就会失败。


MTA: Mutil-Thread Apartment,中文叫多线程套间。COM库在进程中创建一个内存结构,这个内存结构在整个进程中只能有一个,然后让它和调用CoInitializeEx的线程相关联。支持MTA的COM对象可以在任意线程里被使用。多有针对它的调用都会被封装成为消息。


其实STA和MTA是COM规定的一套线程模型,用于保障多线程情况下你的组件代码的同步。比如说有一个COM对象它内部有一个静态变量 gHello,那么这个对象无论生成多少实例对于gHello在内存中只能有一份,那么如果有两个不同的实例在两个线程里面同时去读写它,就有可能出错,所以就要就要有种机制进行同步保护,STA或者MTA就是这种机制。
qqiuzaihui 2009-08-15
  • 打赏
  • 举报
回复
使用单例模式, 这样始终就只有一个线程实例在运行了.

public sealed class SingleThread        //阻止发生派生, 而派生可能会发生实例
{
//在第一次引用类的任何成员时创建实例.公共语言运行库负责处理变量初始化
private static readonly Thread myThread = new Thread(Threadfunction);

private SingleThread() { }

public static SingleThreadGetInstance()
{
return myThread ;
}
}
Harrison_2009 2009-08-15
  • 打赏
  • 举报
回复
不好意思,菜鸟不会说话,是在主程序那里写了一个监听的线程,想其他的窗口都不使用。。应该怎样做?
mythad 2009-08-15
  • 打赏
  • 举报
回复
jf,不用多线程不用异步。。。那就只有主线程在运行了
dancingbit 2009-08-15
  • 打赏
  • 举报
回复
你不用多线程的话,自然就是一个线程了。
miracle_hahaha 2009-08-15
  • 打赏
  • 举报
回复
参考
dancingbit 2009-08-15
  • 打赏
  • 举报
回复
线程从网络接收的数据,可以通过各种方式传递给各窗体,常用的就是通过委托。
论坛中有很多这种主题的帖子。
Harrison_2009 2009-08-15
  • 打赏
  • 举报
回复
我企望的是主程序中监听到的内容填充到指定的窗口内!例如:每个新建的窗口的text属性都不一样的!主线程中监听到的内容就根据其text进行填充数据!应该如何做!

110,572

社区成员

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

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

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