求助,关于多线程委托执行方法的问题。

yyd021 2011-07-22 09:54:10
我现在有两个线程假设为T和U,T为计时器线程,由计时器控制定时执行。U为用户界面线程,由用户控制随机执行。目前由于是二次开发,我对T线程的执行时间和启停没有任何控制能力。但是可对T线程的某个执行方法所在的类ClassT进行修改。我想实现这样一个功能,T线程执行时需要独占网络通道资源,而我的U线程也需要占用网络通道资源。
我的想法是通过U线程修改T线程执行方法的类,给T线程一个标志变量,T线程的方法检测该标志变量执行某个U线程要执行的方法。从而实现T线程代U线程执行要执行的方法的目的。
1.修改ClassT类,新建 bool型 mUDelegated 变量。用于控制T线程执行需要的方法。
2.修改T线程的执行方法,ClassT中的MethodT方法,增加依赖于mUDelegated变量的分支,用于执行U线程指定的方法MethodU2(该方法可能是很多不同的方法)。
3.编写U线程的方法MethodU,修改mUDelegated的值。
目前有这么个问题
a.我如何将通过U线程要执行的方法名和方法参数传递个T线程?
b.U线程如何获得和T线程执行方法MethodU2的结果?

我尝试这么几种方式
a. 通过定义委托,MethodT的分支方法内直接调用委托。但是存在传递参数和返回参数的问题,另外调用的方法类型都不一样委托似乎无法实行。
b. 向类ClassT中添加一个变量,方法名,通过反射执行指定方法。同样存在传递参数的问题。
c. 对每个方法设计一个类,用于存储传入参数和返回参数,该思路似乎可行,但执行起来使得程序结构相当复杂,代码量也很大。
请高手替我分析下。
...全文
121 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tigerleq 2011-07-22
  • 打赏
  • 举报
回复
你的 思路 可性
在t做完后改变 属性 时 或则 达到你的要求时
属性 改变 触发 自定义事件

至于 传什么 参数
你自己 定义 事件 的参数 从t完成 时 传出
tigerleq 2011-07-22
  • 打赏
  • 举报
回复
问题 请 采用
装饰模式(Decorator Pattern)(类定义不能用于生成子类时使用,是变向 的继承)
和观察者模式(Observer Pattern)(事件委托)

使用 Decorator 方式 扩展T 加上 事件

在使用 T时 加上 注册事件
如:

delete public 定义的事件;
X:Decorator
{

线程执行的方法()
{
base.线程执行的方法();
定义的事件();
}
}

使用 X时,便向启动 T
在做玩了,触发事件

x.定义的事件 += 定义的事件(你自己写的事件处理方法)
yyd021 2011-07-22
  • 打赏
  • 举报
回复
前面的是需求,后面的是思路
rongzhou19831007 2011-07-22
  • 打赏
  • 举报
回复
没看懂,绑顶

110,533

社区成员

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

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

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