C#的winform中对于Form窗体的Timer控件问题?
   最近想实现一个控制,就是winform程序向通过socket协议进行数据指令的收发,收到对应的指令启动timer的控件执行timer控件操作的内容,但是发现通过了socket之后就不再执行timer事件中的语句了,如果换做用system.timers.timer 发现使用过程不好控制。求各位大神支个招,解释下为什么?

1个回答

只要实现的话,贴这个
this.Invoke(new Action(()=>{
timer1.Enable=true;
}));
没编译,大概是这样。
听起来是用winform的timer不能跨线程调用,而收socket的是一个子线程,又不想用跨线程的timer,发个委托给主线程就行。

htiannuo
MayAcho 十分感谢啊,跟我找到实现的方式一样,采用委托!辅助线程不能实现,所以用委托就行
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
winform中timer控件的问题
我在程序中,用3个timer,一个计算提醒时间,一个计算反馈时间,一个计算提醒中的闪烁提醒的间隔,代码中还有一个线程监视数据库的一个表。rn功能是这样,表中插入数据,这边就根据设置的提示方式(弹出、闪烁)来提示。rnrnrn问题是:这个闪烁提醒的计时器到期了,有时触发、有时不触发Tick事件。(我是选择了闪烁提醒的)
winform timer 控件问题????
我现在用timer 来实现5秒中到数据库中读取数据。绑定到datagrid中,同时利用一个lable显示用了多少时问。加了个timer windows的控件,但是在数据更新时ui页面闪动。后来改为system.threading.timer这个问题还是存在。请问怎么解决这个窗体闪动,同时ui不假死的问题,谢谢
C# WinForm中窗体控件缩放的问题
网上也搜到了许多,可是都有这样或那样的问题。rn问题列举如下:rn第一:窗体拖拉到很小的时候,再次给拖拉到大的时候,控件出现错乱rn第二:只是在拖拉时窗体控件才会收缩,直接最大化时没有效果,并且也会出现第一种问题rn第三:如果我是在一个容器中添加控件,只是容器进行收缩,而容器中的控件却不会伸缩。rnrn目前仅发现了网上提供的源码有这几种问题。rnrn不过最终还是希望大家能够提供个比较全面的。谢谢
C# 窗体Timer问题
开发的程序里面有个label,用来显示当前的时间,rn是用Timer控件实现的rnrn实现的功能是:当用户点击最小化或者处于Deactivate时,rn记录当前时间,不触发Timer事件rn再次点击时,还原之前记录的时间,触发Timer事件rnrn我的做法是在窗体的Deactivate事件,暂停Timer事件rn在窗体的Activated事件,重启Timer事件rnrn问题是rn窗体显示后,快捷键(win+D)显示桌面,再去运行其他程序,如360浏览器,时间还是在运行rn是否与窗体的Deactivate Activated事件有关?rn求高手?rnrn
form中的timer问题
我的程序中要求在当前的form1中每30秒重新查询一次结果,但当某一些botton被按下时,打开另一个form2,这是不许重新查询,当form2关闭时,不论时间间隔是否30秒,都要立刻重新查询。应该怎么做?
C# 中Timer控件的问题
在VB里有rnPrivate Sub Timer1_Timer()rn ...代码...rnEnd Subrn可以在其它的sub里用Timer1.Enabled = True;和Timer1.Enabled = false;控制它是否执行。rn rn现在我要用.net 2005(C#)实现这个功能,发现只有一个 rnprivate void timer1_Tick(object sender, EventArgs e)rn rn rn请问高手我因该怎么实现以上VB实现的功能
C#中控件timer
用timer的时间间隔来实现计时器的控制,达到不同的效果!
C#中WinForm窗体的问题。
我在form1中调用form2 ,form2中弹出对话框后 确定后 form2也消失了,返回到form1 我不想返回form1 rnrn只是退出form2中的一个过程 在vb中用Exit Sub 在C#中用??? rn我试过用return不行。rn代码如下:rnprivate void button1_Click(object sender, System.EventArgs e)rn rn string returnstr=check_login(textBox1.Text,textBox2.Text);rn if(returnstr!=null)rn rn MessageBox.Show(returnstr,"警告信息:",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);rn rn rn elsern rn this.Hide();rn rn rn rn
关于Winform的Timer控件问题
请问Timer 控件是多线程的吗??rnrn比如我设置Timer 每 10秒执行一个事件,如果 单个事件 10秒内执行不完,那 10秒后,程序还会在进入吗???rnrn
WinForm的Timer控件的一点问题
[code=C#]using System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Text;rnusing System.Windows.Forms;rnrnnamespace WinFormCourseProjectrnrn public partial class MdiAdminMain : Formrn rn public MdiAdminMain()rn rn InitializeComponent();rn rnrn string name = "";rnrn public MdiAdminMain(string name)rn : this()rn rn this.name = name;rn rnrn private void mmsExit_Click(object sender, EventArgs e)rn rn Application.Exit();rn rnrn private void mdiAdminMain_FormClosed(object sender, FormClosedEventArgs e)rn rn Application.Exit();rn rnrn //2009-7-17,星期三,晚上 21:20:21;rn private void mdiAdminMain_Load(object sender, EventArgs e)rn rn this.getTime();rn tmrTimeChanged_Tick(sender, e);//看这里rn rnrn /// rn /// 生成日期时间字符串rn /// rn private void getTime()rn rn DateTime currentTime = DateTime.Now;rn string date = currentTime.ToString("d");//得到日期rn string time = currentTime.ToLongTimeString();//得到时间 rn string[] day = "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" ;rn string d = day[Convert.ToInt16(currentTime.DayOfWeek)];//得到时间rn int h = currentTime.Hour;rn string s = "";rn if (h >= 1 && h <= 4)rn rn s = "凌晨";rn rn else if (h >= 5 && h <= 7)rn rn s = "早上";rn rn else if (h >= 8 && h <= 10)rn rn s = "上午";rn rn else if (h >= 11 && h <= 12)rn rn s = "中午";rn rn else if (h >= 13 && h <= 16)rn rn s = "下午";rn rn else if (h >= 17 && h <= 18)rn rn s = "傍晚";rn rn else if (h >= 19 && h <= 22)rn rn s = "晚上";rn rn else if (h == 23 || h == 0)rn rn s = "子夜";rn rnrn this.lblTime.Text = name + ",你好!现在是 " + date + "," + s + " " + time;rn rnrn /// rn /// Timer控件rn /// rn private void tmrTimeChanged_Tick(object sender, EventArgs e) //看这里rn rn tmrTimeChanged.Enabled = true;rn tmrTimeChanged.Interval = 1000;rn tmrTimeChanged.Tick += new EventHandler(mdiAdminMain_Load);rn rn rn[/code]rnrnMSDN上用tmrTimeChanged.Start(),我这没用也可以让form上的text每隔一秒改变一次,但我感觉我这么写好像不是用到timer控件而是让两个方法互相调用,有没有更好的写法介绍一下,感谢
winform打印form窗体的问题
打印一个带滚轮的form窗体里面的内容,只能打印一部分(滚轮滚到的部分),请问怎么打印form窗体的全部rn打印的代码如下:rnrnrn //打印内容 为 整个Formrn Image myFormImage;rn myFormImage = new Bitmap(this.Width, this.Height);rn Graphics g = Graphics.FromImage(myFormImage);rn g.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, this.Size);rn e.Graphics.DrawImage(myFormImage, 0, 0);rnrn
WinForm程序中Timer控件问题
我现在想要实现这样的功能,就是设定一个时间点比如10点,当时间接近设定的时间点(10点)时,出现一个提示框信息,提示相关信息,10点以后提示框消失rn现在我用一个timer1控件,时间间隔设置为1分钟,程序启动的时候将timer1.Start();rn我想问是这样做得话会不会影像程序性能,因为获取的是服务器时间,每隔一分钟就要执行 timer1_Tick事件,如果客户端多了话会不会影像性能
WinForm中使用Timer控件的问题?
rn功能描述:rnrn有一界面,界面中有两个下拉列表框及两个文本输入框,这两个下拉列表框通过代码来控制加载的内容,需要实时刷新。rnrn问题描述:rnrn我的方法是用Timer控件+多线程+委托来实现,一开始我用的是System.Windows.Forms.Timer控件,可以实现实时刷新(设置的间隔时间为1秒、3秒、5秒都试过),但是当我拖动窗体的时候,发现有点卡,而且在文本输入框中输入内容能明显感觉到卡,我换成了System.Threading.Timer,同样设置的间隔时间1秒、3秒、5秒都试过,还是感觉卡;我现在换成了System.Timers.Timer,仍然感觉很卡……rnrn求解决办法?rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/17.gif][/img]rnrn
WinForm 中使用Timer 控件的问题
我写了几个c#程序,每个a程序都有一个Timer控件来处理程序开始运行的时间rn本来应该说各个程序互不相扰,可实际上某个Timer控件会受到其他程序的运行rn这是为什么呢?
c# timer控件问题
private void button3_Click(object sender, EventArgs e)rnrn int ziptimer = Convert.ToInt32(this.textBox1.Text);rn this.timer1.Interval = ziptimer * 3600000;rnrn为什么设置后的Interval属性的值没有变呢?rn本来我设置的是3600000,然后运行程序,textbox1给的值是2,点了button3后,再重新运行程序,为什么timer1的Interval的值还是3600000?rn
C# Timer控件问题
我从toolbox里拖了一个timer到form上rn然后我在一个逻辑FuntionA里去Enable他,简单如下:rnpublic void FuntionA()rnrn this.timer1.Enabled=true;rn this.timer1.Start();rnrn messagebox.show("End")rnrnrnprivide void timer_Tick(xxx,xxx)rnrn messagebox.show("Start");rnrnrn现在问题是这样的,timer的间隔是2秒。我在funtionA里enable之后,在程序运行的时候并没有进入Tick事件里犹豫timer的间隔是2秒。所以他会马上弹出一个messagebox。rn我现在想有没有什么方法,可以enable之后,先弹出“Start”,再弹出“End”.rn有木有大侠帮忙!rn
C# timer控件的问题
timer控件内有其它的函数...其它的函数已经做过错误处理,函数内有异常的时候提示出异常内容;rnrn但是,timer是按一定1000的事件执行的,现在的问题是,函数内抛出的错误提示...rnrntimer会一提弹出很多个提示rnrnrn所以,如果调用函数内部错误后,如何让timer暂停???
C# timer控件问题
我写了一个服务程序,里面用了是timer控件,关键代码如下rnprotected override void OnStart(string[] args)rn rn FileStream fs = new FileStream(@"c:\ETLConfig.txt", FileMode.Open);rn StreamReader m_str = new StreamReader(fs);rn StartTime = m_str.ReadLine();rn ToEmailAdress = m_str.ReadLine();rn fs.Close();rn //定义定时器,每一分钟震荡一次rn Timer atimer = new Timer();rn atimer.AutoReset = true;rn atimer.Start();rn atimer.Interval = 1000 * 60;rn atimer.Elapsed += new ElapsedEventHandler(atimer_Elapsed);rnrnrn rnrn void atimer_Elapsed(object sender, ElapsedEventArgs e)rn rn //获得时钟的时间rnrn int intHour = e.SignalTime.Hour;rn int intMinute = e.SignalTime.Minute;rn int intSecond = e.SignalTime.Second;rn // 定制时间; 读取文本文件中的数据,确定执行时间rn int iHour = Convert.ToInt16([color=#FF0000]StartTime[/color].Substring(0, 2));rn int iMinute = Convert.ToInt16(StartTime.Substring(2, 2));rn // int iSecond = 00;rnrn if (intHour == iHour && intMinute == iMinute)rn rn //执行存储过程 rn [color=#FF0000]ExecutePro();[/color]rn rnrn rn其中,startTime是从文件中读取出来,我上班时能够执行过程,可是我设成晚上时老是不能执行?请问是什么原因?
C# winform遍历窗体中所有控件
winform中怎么遍历所有控件,并获取它的属性
c# winform窗体问题
我在form1中的某个方法让form2窗体出现rn那么这个时候怎么关闭form1而不关闭form2呢?
C# winform窗体问题
我现在有一个form窗体 窗体上面有一个panel,我要让我的panel在form窗体的最右边 最上边 panel是可以任意调整大小的。
c# winform 打印 窗体 及 窗体控件
PageSetupDialog 、 PrintDialog 、 PrintDocument 、PrintPreviewDialog 使用
[C# Winform]窗体控件库的变量如何传给form
新建一个窗体控件rn代码如下:rn[code=C#]rnnamespace WindowsFormsControlLibrary1rnrn public partial class UserControl1 : UserControlrn rn public UserControl1()rn rn InitializeComponent();rn rn public int a=1;rnrn private void button1_Click(object sender, EventArgs e)rn rn a = 3;rn rn rnrn[/code]rn主窗体winform里就一个textboxrn把控件放在Winform上rn怎么能一点控件上的button1,textbox上就显示变量a的值?rn我新手...rn希望高手能帮帮忙讲详细点rn谢谢了先
Winform圆角窗体,timer倒计时关闭窗体
public partial class MyMessageBox : Form { // 自动关闭的时间限制,如3为3秒后自动关闭 private int _second; public int Second { get { return _second; } set { _sec...
Form 中的Timer耗时问题
各位大虾们,我在Form 中添加了一个 timer ,时间间隔Itimer.nterval = 10,在timer_Tick事件中只做了一个计数器Icount++;然后将这个计数器再文本框中显示出来,代码如下:rntimer_Tick(...)rnrn iCount++;rn textBox.Text = iCount.ToString();rnrnrn为什么iCount从0加到2000居然需要32秒,那么执行一次timer_Tick需要16毫秒,即使我将Itimer.nterval = 5,也需要30多秒,按理说10多秒久可以完成的啊,请问各位大虾如何解决呢?
winform中的form问题
一个form是一个登录界面,为frm1,里面有一个登录button,我想在点击登录的时候,frm1关闭,另一个form 名为frm2打开,我写的代码 rnfrm1.close();rnfrm2 f2 = new frm2();rnf2.show();rn但是当我点击登录的时候,两个form都没有了,当我把frm1.close();注释掉的时候,可以,但两个form都存在,请为该怎么实现啊?第一次写winform程序,求指点
C#窗体的timer
C#窗体中Timer的用法实例,有助于全面掌握其用法
请教c#中的Timer控件
我写了一个windows services,从组建中增加了一个Time控件,在timer1_Tick事件中写数据库,代码如下:rn // rn // timer1rn // rn this.timer1.Enabled = true;rn this.timer1.Interval = 1000;rn this.timer1.Tick += new System.EventHandler(this.timer1_Tick);rn // rnrnrn protected override void OnStart(string[] args)rn rn this.timer1.Enabled = true;rn this.LogMessage();rn rnrn protected override void OnStop()rn rn rn this.timer1.Enabled = false;rn rnrnrn private void LogMessage()rn rn SqlConnection conn = new SqlConnection("server=127.0.01;database=NetworkServicer;uid=sa;pwd=sa");rn string sql_s = " insert into [PingLog] ([EventDatetime],[EventLevel], [EventMessage]) VALUES ('2010-01-21','111','11')";rn SqlCommand comm = new SqlCommand(sql_s, conn);rn conn.Open();rn comm.ExecuteNonQuery();rn conn.Close(); rn rnrn private void timer1_Tick(object sender, EventArgs e)rn rn this.LogMessage();rn rnrn每次只有开始时写入的一条记录,timer1_Tick事件怎么没有执行?
C#中的 TIMER控件(初学)
在 C#中创建一个窗体 托一个文本框 TEXT 给 0 一个 按钮 一个 TIMER 控件 现在要单击按钮 是文本框中的值 一秒中加加 一 也就是一个简单的 计时器 求代码
C#中窗体Form的美化
C#中窗体Form的美化
c# winform 窗体下 如何遍历窗体中的所有RectangleShape控件
我想遍历 RectangleShape控件 然后控制他们的颜色,请大神们指教一下,谢谢!
WinForm窗体中控件不见了
有一A窗体,里面有很多空间,且后台很多代码,运行正常,今天在属性框双击那个A窗体,突然A窗体里的所有控件不见了,但是后台代码全部在,在初始化函数InitializeComponent单步调试的时候,也可以运行到一些控件的初始化代码,但是不知道为什么窗体中的控件全不见了????
Form 控件与窗体大小问题
rn请教一个笨问题,rnrn请问怎么样才能让控件随着窗体的大小而变化自身大小呢.rnrn
关于WinForm中Timer控件的用法
我想做个计时器。很简单的功能:一是能在label上显示出时间在一分一秒地走动。rnrn二是能取得时间差。就是当我按下开始Button时开始计时,按下停止Button时停止计时。rnrn并能取得两个时间的值,这样就能取得时间差了。rnrn 我想请教各位前辈,如何来用这个Timer控件,或者还有其他控件来完成?rnrn 最好有代码显例!!!
C#中的Timer问题
我编写了一个程序,用到了Timer来计时,没隔一段时间产生一个elapsed事件,然后我还想让程序开始运行时就运行elapsed事件,而不是隔一段时间后才运行,我该如何修改?
C#中timer的问题
[code=C#]private void timer1_Tick(object sender, EventArgs e)rn rn int count = 0;rn int b;rn rn string ConnectionString = "Data Source=al;user=bao;password=12;";//写连接串 rn OracleConnection conn = new OracleConnection(ConnectionString);//创建一个新连接 rn conn.Open();rn OracleCommand cmd = conn.CreateCommand();rn OracleCommand cmd1 = conn.CreateCommand();rn cmd.CommandText = "select * from(select * from sms_al where is_deal=0 order by al_time) where rownum<=1";//在这儿写sql语句rn cmd1.CommandText = "select count (*) from sms_al where is_deal=0";rn OracleDataReader odr = cmd.ExecuteReader();//创建一个OracleDateReader对象rn OracleDataReader odr1 = cmd1.ExecuteReader();//创建一个OracleDateReader对象rn while (odr.Read())//读取数据,如果odr.Read()返回为false的话,就说明到记录集的尾部了 rn rn count++;rn textBox4.Text = odr.GetOracleString(1).ToString();rn textBox5.Text = odr.GetDateTime(2).ToString();rn textBox6.Text = odr.GetOracleString(3).ToString();rn textBox1.Text = odr.GetOracleString(7).ToString();rn a = odr.GetInt32(0);rnrn rn rn System.Media.SoundPlayer sp = new System.Media.SoundPlayer();rnrn sp.SoundLocation = @"C:\\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\12110baojin\12110baojin\jingbao.wav";rn sp.Play();rn pictureBox8.Show();rn rn rn while (odr1.Read())//读取数据,如果odr.Read()返回为false的话,就说明到记录集的尾部了 rn rn count++;rn rn b = odr1.GetInt32(0);rn label17.Text = b.ToString();rn rnrn rn rn odr.Close();rn cmd.Clone();rn conn.Close();rn rn rnrn [/code]rnrnrnrn 做了一个小程序,有一个timer控件,timer的作用是每隔10秒访问数据库看里面有没有新的信息,如果有就提取出来显示在winform上,然后处理信息,如果有多条信息,会有上一条下一条来翻取,现在的问题是,因为时间间隔是10秒,所以如果有多条信息过来,还没等处理完就再次查询,重新更新了在界面上显示的内容,所以我想在第一次查询完之后使timer停止,然后当所有的事件都处理完了之后再单击一个按妞使timer重新运行,不知道有没有这种方法,有的话希望高手帮下....rnrn上面是代码,应该怎么修改请高手告诉下...
c# FORM窗体 TREEVIEW的问题
有个TREEVIEW控件,节点若干,想按照先后顺序遍历节点,把各节点值取出来,分中1,2,3,4级,请高人指点下,该怎么写呢
winform刷新父窗体中控件的问题
问题描述:rnrn主窗体中有一个combobox控件(用于绑定分类),已经绑定,代码如下:rn[code=C#]rnpublic void GetTypeName()rnrn this.cboType.DataSource = clientBLL.GetTypeName().Tables[0].DefaultView;rn this.cboType.DisplayMember = "TypeName";rn this.cboType.ValueMember = "Id";rnrn[/code]rnrn窗体中有个按钮,为添加分类的按钮.打开添加分类窗体,添加所需分类之后Hide()当前窗体.rn请问如何在父窗体中刷新combobox控件,使其显示刚才已添加的新分类?rnrn现在的程序必须关闭主窗体之后重新打开,才能看到添加后的分类!rnrn期盼高手前来解答!
c# WinForm动态加载Form窗体与MDI窗体合并工具栏
由于项目需求,需要将以前做的多个项目整合到一个软件,于是想起来利用反射,将以前的项目编译成动态链接库,然后将每个项目的DLL以及依赖的DLL放到主框架的某个文件夹下,然后通过配置文件查找出所需加载的项目的路径,然后利用反射加载项目,这些都没问题,但是主框架是MDI窗体,需要将加载出的窗体于其合并,包括菜单和工具栏,菜单可以自动合并,但是工具栏无法合并,因为根本不在一个程序集内!!!!!(也无法将此加载项继承MDI窗体进而合并菜单) rn急!!!!!请高手解答!!!!!!!!!!
C# winform打开本地.exe文件放到form窗体中
C# winform打开本地.exe文件放到form窗体中,也就是把其他东西内嵌到项目中来。求大神指点。。
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview