e***r 发帖数: 68 | 1 我把要实现的功能都放到一个worker class里面,然后把该worker class作为一个
winform class的成员。用户点击winform上的button时,button的event内会call
worker class的public方法。
现在的问题是,我想在winform内显示worker class输出的信息,不知道最地道的做法
是什么。
如果都在一个class, worker可以通过改变winform内textbox.Text来显示不同信息,但
现在winform和worker class在不同的类,不能直接调用,而且winform control都是私
有成员,不能通过winform的reference直接访问。
不知道这种winform和worker class的coupling问题是不是很常见而且有成熟的解决办
法 |
k*k 发帖数: 508 | 2 set your public method's output as a string instead of void, if
you need a string as output, or whatever you want.
another way is to put an out parameter in the method.
【在 e***r 的大作中提到】 : 我把要实现的功能都放到一个worker class里面,然后把该worker class作为一个 : winform class的成员。用户点击winform上的button时,button的event内会call : worker class的public方法。 : 现在的问题是,我想在winform内显示worker class输出的信息,不知道最地道的做法 : 是什么。 : 如果都在一个class, worker可以通过改变winform内textbox.Text来显示不同信息,但 : 现在winform和worker class在不同的类,不能直接调用,而且winform control都是私 : 有成员,不能通过winform的reference直接访问。 : 不知道这种winform和worker class的coupling问题是不是很常见而且有成熟的解决办 : 法
|
g********a 发帖数: 649 | 3 卡夫卡大牛快看看我的微软面试题。
【在 k*k 的大作中提到】 : set your public method's output as a string instead of void, if : you need a string as output, or whatever you want. : another way is to put an out parameter in the method.
|
e***r 发帖数: 68 | 4 问题是public method执行过程中不同阶段要输出不同信息。例如worker class中有一
个ConnectToServer(...),开始时输出: "Connecting to Server...",连接建立后
要输出"Connected to Server". 我想winform每个阶段都把这些信息output到text box
上。
【在 k*k 的大作中提到】 : set your public method's output as a string instead of void, if : you need a string as output, or whatever you want. : another way is to put an out parameter in the method.
|
g********a 发帖数: 649 | 5 搞个event吧,每次有新文字就fire event,winform的event handler
对应更新。
box
【在 e***r 的大作中提到】 : 问题是public method执行过程中不同阶段要输出不同信息。例如worker class中有一 : 个ConnectToServer(...),开始时输出: "Connecting to Server...",连接建立后 : 要输出"Connected to Server". 我想winform每个阶段都把这些信息output到text box : 上。
|
k*k 发帖数: 508 | 6 这个应该是正确的解决办法,如果需要传递多次消息。
可以定义一个 event,带上一个 string 参数。
【在 g********a 的大作中提到】 : 搞个event吧,每次有新文字就fire event,winform的event handler : 对应更新。 : : box
|
e***r 发帖数: 68 | |
e***r 发帖数: 68 | 8 弄出来了:
1.worker class define&declare一个delegate.
2.然后winform中定义一个函数,绑定到worker class的delegate中
3.每当需要update的时候,worker class调用delegate.
说白了就是把winform中update textbox的函数指针传进worker class,然后update时
worker class调用函数指针对winform进行update.
语法比定义event要简练一些。 |
N********n 发帖数: 8363 | 9 You can handle it w/ classic InvokeRequired method.
【在 e***r 的大作中提到】 : 我把要实现的功能都放到一个worker class里面,然后把该worker class作为一个 : winform class的成员。用户点击winform上的button时,button的event内会call : worker class的public方法。 : 现在的问题是,我想在winform内显示worker class输出的信息,不知道最地道的做法 : 是什么。 : 如果都在一个class, worker可以通过改变winform内textbox.Text来显示不同信息,但 : 现在winform和worker class在不同的类,不能直接调用,而且winform control都是私 : 有成员,不能通过winform的reference直接访问。 : 不知道这种winform和worker class的coupling问题是不是很常见而且有成熟的解决办 : 法
|