日期:2014-05-17  浏览次数:21063 次

C# 有关在主线程中开辅助线程,然后在辅助线程中再开辅助线程
各位:
   关在主线程中开辅助线程,然后在辅助线程中再开辅助线程的可行性?

这样写的目的:1:因为整个程序是为了完成一整套的工作.如动作A到动作B再到动作C,其中动作A中可能         也会包含动作A1,A2.动作B中也可能包含B1 B2等. 
       
       2:因为第一个具体的动作都涉及一个模块,都是写在一个方法里面的.方便调用.
       
       3:因为在辅助线程中获得的数据要及时刷新,要调用有主界面中控件listview,也就要用到委               托,也就要别开线程

    因为整个程序的执行效率要求比较高,但多开辅助线程也会占用很多的时间,所以想请教下,针对我这种要求,有没有更好的编程思想方法.谢谢

------解决方案--------------------
ThreadPool 就行, 不建议搞那个骗人的Task.

用ThreadPool搞定线程一切.

不存在什么线程里又开子线程问题. 归根结底, 所有的都是线程. 只需要注意以下线程处理模型就可以.

也就是 判断一下System.Threading.SynchronizationContext.Current
------解决方案--------------------
这样写的目的:1:因为整个程序是为了完成一整套的工作.如动作A到动作B再到动作C,其中动作A中可能         也会包含动作A1,A2.动作B中也可能包含B1 B2等. 
       没看懂,是在主线程中开启子线程吗?子线程再开启孙线程吗?虽然实质上她们都是线程,但是变量的作用域的问题,最好还是分开
       2:因为第一个具体的动作都涉及一个模块,都是写在一个方法里面的.方便调用.
       也没看懂,什么叫写在一个方法里面,是说这个方法可以根据你传入的参数自动判断需要开启哪一个线程吗
       3:因为在辅助线程中获得的数据要及时刷新,要调用有主界面中控件listview,也就要用到委               托,也就要别开线程
             [color=#99CC00]也就要用到委托,也就要别开线程 还是没看懂,子线程获取到数据,通过委托的方式去更新控件吗?这种方法是可行的,我以前试过[/color]
    因为整个程序的执行效率要求比较高,但多开辅助线程也会占用很多的时间,所以想请教下,针对我这种要求,有没有更好的编程思想方法.谢谢
没看懂,首先多开线程是为了加速程序的运行,将单通道处理变成多通道处理
我觉得 线程最好还是不要用的好
太难控制了,除非是同样类型的数据需要处理,不然你可以去试试异步刷新

------解决方案--------------------
在判断什么样的程序编写方式比较好时,不需要纠结于是非(理论)。你能写出测试,你就能判断当下能不能做什么事情。你不能写出测试,你就只能给别人一遍遍地纠结是非。

你写出了测试,并且做出了判断,可能过一段时间(例如一年以后)发现以前的测试“写错了”,因此得到了错误的结论。但是无论如何,你是实践者,你用测试来驱动自己的判断,而不是整天只是问别人“是否可行”的问题。
------解决方案--------------------
我前前后后花了将近50分钟才看懂你要干什么,也不知道我理解的对不对
此外 请看看你给我的回复其中视觉处理及Excel写入会在某个动作之发生,这也是我为何想在子线程中孙线程的原因。  之前?之后?之中?打完了字,稍微花点时间看一下

我的感觉大概就是:
比如的自动化设备是采集图像,采集完之后开启线程处理图像,
采集图像1 ----》采集完成----》采集图像2------》采集完成------》
                        线程-》处理图像1                线程-》处理图像2
无法获得你的具体需求,说的很含糊,貌似需要保密啊。我能帮助的很少,抱歉
其次对于像7楼那种人,我觉得你不要太在意,我很不鸟他,我以前也会在csdn问一些问题
他的回答直接屏蔽   中国从来就不缺这种   空 大 泛 的人  都多少年,还一直这个调调
讲理论毫无作用,别人问1+1 回答2就行了  
多多独立思考确实很有帮助