问个多线程的问题,求大神帮忙。。。。。。。。。。。。。。。。。。。。。。。

问题描述

问个问题,c#中,运行起来一个winform程序,点击连接按钮,启动一个定时器,这个定时器每0.1秒去执行一个方法。在点击连接之后,我还想按其他按钮,执行其他方法,但由于定时器里面的方法正在运行,所以点击其他按钮,执行其他方法时比较卡,所以我想弄两个线程,一个线程去执行定时器的方法,一个线程执行其他按钮的方法,,,没学过c#的多线程,求帮忙,求思路。。。。

解决方案

解决方案二:
timer根本就不是线程,你先把这个概念顺过来你那种就要开Thread
解决方案三:
组件的Timer压根就不是多线程,纯粹的UI组件不卡才怪,很多都喜欢用这个,实质上这个效率差,且性能不佳用这个System.Threading.Timer这个就是本质多线程,而且灵活,采用的是后台线程池线程操作。处理好可以解决界面卡的问题
解决方案四:
我没说timer是线程啊。。timer当然不是线程啦。要是这点我不知道的话,那就没必要问这个问题了。我想在timer里面写一个线程。。。引用2楼的回复:

组件的Timer压根就不是多线程,纯粹的UI组件不卡才怪,很多都喜欢用这个,实质上这个效率差,且性能不佳用这个System.Threading.Timer这个就是本质多线程,而且灵活,采用的是后台线程池线程操作。处理好可以解决界面卡的问题

解决方案五:
引用3楼的回复:

我没说timer是线程啊。。timer当然不是线程啦。要是这点我不知道的话,那就没必要问这个问题了。我想在timer里面写一个线程。。。引用2楼的回复:组件的Timer压根就不是多线程,纯粹的UI组件不卡才怪,很多都喜欢用这个,实质上这个效率差,且性能不佳用这个System.Threading.Timer这个就是本质多线程,而且灵活,采用的是后台线程池线程操作。处理……

那就看回复System.Threading.Timer是多线程
解决方案六:
使用System.Threading.Timer://注意!!!://这个Timer必须使用全局变量,如果声明成局部变量的话,只会执行一次,就被GC回收了privateSystem.Threading.Timer_timer=null;privatevoidMyMethod(objectstate){//dosomething}privatevoidStartTimer(){constintperid=100;//100msif(_timer==null)_timer=newTimer(MyMethod,null,0,perid);else_timer.Change(0,perid);}

解决方案七:
newSystem.Threading.Timer(showCarVideo,null,0,perid);我是这样写的,showCarVideo是我的方法,为什么会报错呢?参数无效。。。引用5楼的回复:

使用System.Threading.Timer:C#code//注意!!!://这个Timer必须使用全局变量,如果声明成局部变量的话,只会执行一次,就被GC回收了privateSystem.Threading.Timer_timer=null;privatevoidMyMethod(objectstate……

解决方案八:
newSystem.Threading.Timer(showCarVideo,null,0,perid);我是这样写的,showCarVideo是我的方法,为什么会报错呢?参数无效。。。引用5楼的回复:

使用System.Threading.Timer:C#code//注意!!!://这个Timer必须使用全局变量,如果声明成局部变量的话,只会执行一次,就被GC回收了privateSystem.Threading.Timer_timer=null;privatevoidMyMethod(objectstate……

解决方案九:
要使用这个timer,你的showCarVideo这个方法必须带一个(objectobj)的参数,即便你不用,也必须要写喔。
解决方案十:
类似的场景有两种:一种是每隔一段时间执行一次某个操作。另一种是执行一次操作后,间隔一段时间再执行下一次操作。第一种场景使用timer较佳,而第二种情况推荐使用while(true){//DoSomethingThread.Sleep(100);}示例:一、使用timerprivateSystem.Threading.Timer_timer=null;//这个要使用个全局变量,代码不好看privatevoidStartMyWork(){_timer=newTimer(MyMethod,null,0,100);}privatevoidMyMethod(objectobj){/*DoSomething*///如果在timer里面需要更新UI控件的话,由于这个timer不是在主线程中执行的因此要这样访问:this.Dispatcher.BeginInvoke(newAction(()=>{//这样更新UI}));}二、使用死循环privatevoidStartMyWork(){ActionloopAction=MyMethod;loopAction.BeginInvoke(null,null);}privatevoidMyMethod(){while(true){//DoSomethingThread.Sleep(100);}}

解决方案十一:
没用过,不过这几天玩线程,是否可以在定时器中直接就启动线程去处理?http://blog.csdn.net/xianfajushi/article/details/7609849

时间: 2024-11-08 19:15:08

问个多线程的问题,求大神帮忙。。。。。。。。。。。。。。。。。。。。。。。的相关文章

线程并发 数据读写-求大神帮忙,c#多线程问题

问题描述 求大神帮忙,c#多线程问题 需求: 调用一个方法读数据,方法已经写好了,然后将读出的数据写入本地文件,可以是txt, 总共5个字段或者说属性参数. 因为要两个线程并发,边读边存,大体怎么搞,给点伪代码也行啊 多谢 解决方案 本地文件是没有等待的,同一个线程读写就可以了.两个线程做什么? 解决方案二: 用waithandle同步下 代码参考https://msdn.microsoft.com/zh-cn/library/system.threading.waithandle(VS.80)

spring 注入 多线程-spring多线程注入报错,求大神帮忙解决一下。。谢谢!!

问题描述 spring多线程注入报错,求大神帮忙解决一下..谢谢!! Error creating bean with name 'transactionManager': Singleton bean creation not allowed while the singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implement

java-问问大神们 我刚开始学面向对象 求大神帮忙解释一下

问题描述 问问大神们 我刚开始学面向对象 求大神帮忙解释一下 这是自己创建的一个类 然后有参无返回都运行成功了,就是有参数有返回值的那里出问题了 运行不了 按运行键后 控制台出的程序是别的 请问大神们这是什么原因?这是程序 求大神们帮帮忙 解决方案 输出了什么?是错误还是什么信息. 就你的程序没有问题. 解决方案二: 是不是你运行的就不是这个工程啊,你看看你选对当前工程了吗 解决方案三: 把输出的信息发出来下 解决方案四: 编译并运行的文件不对,你点击有参有反回值.java右键run试试. 解决

flash-请问一个关于Print2Flash的问题,求大神帮忙

问题描述 请问一个关于Print2Flash的问题,求大神帮忙 http://www.cnblogs.com/flowwind/p/3411106.html 这篇博文中第3步: 3.在程序里引用Interop.Print2Flash3.dll,并调用如下代码,进行转换.这里的Interop.Print2Flash3.dll在哪儿啊,找不到啊

android-安卓TextView的gravity和字体大小为什么会影响旁边的TextView布局位置,求大神帮忙

问题描述 安卓TextView的gravity和字体大小为什么会影响旁边的TextView布局位置,求大神帮忙 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:la

java-谷歌面试题,求大神帮忙

问题描述 谷歌面试题,求大神帮忙 原题是这样的(后面我补充了中文解释): Don't mind the map After the trauma of Dr. Boolean's lab, the rabbits are eager to get back to their normal lives in a well-connected community, where they can visit each other frequently. Fortunately, the rabbits

malloc-数据结构作业!求大神帮忙看看啊!

问题描述 数据结构作业!求大神帮忙看看啊! #include #include #include int map[20][20]; int book[20][20]; int n; struct node{ int x; int y; int step; struct node*pre; struct node*next; }; struct node queue[401]; struct node head=NULL,*tail=NULL; struct node *create(struct

java后台逻辑问题-求大神帮忙解释下这段代码。

问题描述 求大神帮忙解释下这段代码. 这是一个从表添加页面的代码.currentx是当前页数.我想问下 st st1 st2 st3是什么意思,就是split(:):这个方法我不是很清楚什么意思,还有下面的!ss.equals("t") t是什么. 传参什么的我晓得. @RequestMapping("/addProcess.do") public String addProcessMaintenance(String currentx, String ids, S

求大神帮忙。。。。。。。

问题描述 求大神帮忙....... if (!string.IsNullOrEmpty(this.adultBW.Text.Trim())){ model.BW = Convert.ToDecimal(this.adultBW.Text.Trim()); } else { model.BW = null; } 有好多个文本框,我怎么能简单的把它写出来......用循环要怎么写呢? 解决方案 启动tomcat的时候总是报错: [ERROR] 2015-12-30 14:45:05 :Context

android-问个fragment布局加载的问题,纠结了一天了,求大神帮忙指点一下,谢谢了

问题描述 问个fragment布局加载的问题,纠结了一天了,求大神帮忙指点一下,谢谢了 下班回家了,没图,我详细说下吧. 网上找了个图,类似这种,我是这样实现的,左边一个listfragment,右边一个framelayout,当点击左边条目时,往frame中加载fragment,但是三级分类我们是图片配文字的(上图中只有文字),fragment中是listview加载的图片,我用的imageloader,都是从网络请求,耗时相对较长,请求完成后fragment才显示的,那么问题来了,当我快速切