110,566
社区成员
发帖
与我相关
我的任务
分享
try
{
this.Invoke((EventHandler)delegate
{
toolStripStatusLabel1.Text = "开始读取....!";
});
ButtonStuet(1);
_trans.Delay(10);
byte[] revbuf = _trans.SendData(data);
dt1 = Getdata("ParamSetRecord");
if (revbuf != null)
{
ParamSet(dt1, revbuf);
toolStripStatusLabel1.Text = "读取完成";
}
else
{
this.Invoke((EventHandler)delegate
{
toolStripStatusLabel1.Text = "数据读取不正确!请重新读取";
});
}
}
catch
{
this.Invoke((EventHandler)delegate
{
toolStripStatusLabel1.Text = "无数据........!";
});
}
通讯时发送指令后延时处理数据!当多次操作时会出现软件死锁情况或无响应
有什么方法可以替换
System.Windows.Forms.Application.DoEvents();
sleep
延时中断操作
急等
并附代码
谢谢
public void Delay(int milliSecond)
{
int start = Environment.TickCount;
while (Math.Abs(Environment.TickCount - start) < milliSecond)
{
System.Windows.Forms.Application.DoEvents();
}
}
怎么解决啊
public void BeginTransfer(EnumFtpControl ctrl, Action endCallback)
{
....
Task transferTask = new Task(transferAction, TaskCreationOptions.LongRunning);
transferTask.ContinueWith(lastTask =>
{
if (TransferState != EnumTransferState.Aborting)
endCallback();
TransferState = EnumTransferState.Standby;
});
transferTask.Start();
TransferState = EnumTransferState.Transferring;
}
TransferPacker.Instance.BeginTransfer(BasicConfig.EnumFtpControl, () =>
{
logger.Info("FTP - 传输已经完成(SeqID:{0})", SeqID);
TestStoped();
});
// 将按钮的Click事件处理函数声明成async的
private async void button1_Click(object sender, EventArgs e)
{
int result = await TimeConsumingMethodAsnyc(1);
MessageBox.Show(result.ToString());
}
// 用async方法包装耗时函数
private async Task<int> TimeConsumingMethodAsnyc(int arg)
{
return await Task.Run(() => TimeConsumingMethod(arg));
}
// 耗时函数
private int TimeConsumingMethod(int arg)
{
Thread.Sleep(10000); // 模拟耗时过程
return arg; // 有返回值
}
Application.DoEvents()