征求延迟函数的编写方法:我是写工业控制的,在我的程序中需要延迟函数要求是延迟过程中不会影响正在运行的其他程序,我是这样编写的采用类似VB 的写法。//api declare [DllImport("kernel32.dll")]public static extern int GetTickCount();
public void TimeDelay(int DelayTimeValue)
{   
            
      int StartTime ;

      StartTime=GetTickCount();
            
      do
      {
               
   //Application.DoEvents ();
   
      }while((GetTickCount()-StartTime<DelayTimeValue));
            
}
在程序中我原本使用了Application.DoEvents (); 的方法,来把控制权交给操作系统。使在延迟动作中不至于影响别的程序。我实在一个Timer中循环调用该函数但却出现该问题。
private void ON_TIMER(Object sender,System.EventArgs e)
{

//TimeCmd.Interval =mTimePeriod;
            
if(m5056Changed)
{  string CmdStr="";
               
CmdStr=GetCmdFlags(); CommCon.Output ="#01S200"+CmdStr+ (char)(13);
               
TimeDelay(100);
                
if (CommCon.InBufferCount !=0)
{

string RevStr=CommCon.Input.ToString (); if (RevStr==">" + (char)(13))
//if responds Sucess
{

m5056Changed=false;
mSettingTimes=0;
OnDataReived(RevStr); }

 

结果出现了该问题,程序执行到TimeDelay (1000) 时候确实开始延迟1000,       但是 Timer 却还在动作,还没有等到延迟函数延迟完成,新的动作又来了,导致死机。但去掉Application.DoEvents ();却没有这方面的问题。我曾经用过Tread.Sleep() 但达不到这种效果。请高手点。
在C#中如何实现全局变量和窗体之间的通讯.
为什么给自己定义的控件加上一个自己的图标时候出错?