c# 数据仿真 不断刷新 求思路
各位大神,小弟现在在c#上面遇到一些小问题,求教!具体问题如下,希望给个具体的思路。
在界面加一个textBox,再加一个button。要求是点击button开始仿真,在textBox里每隔0.5秒刷新我自己定义的数据,每隔10秒循环一次。再次点击button,停止仿真。是不是要用到线程,对于线程还不是很熟悉!谢谢各位了。 c#?数据?模拟
[解决办法]
如果只是单任务,去控制timer即可
[解决办法]
你上面的用Timer就可以了
[解决办法]
timer来控制可行不?
[解决办法]
用WPF,绑定ObservableCollection<Model>集合,Model继承以下类,后台只要修改集合,UI就会自动更新了。具体你可以查询下相关的知识。
/// <summary>
/// 负责属性更改通知
/// </summary>
public class ObservableObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public virtual void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
private System.Timers.Timer DisplayTimer = new System.Timers.Timer(500);
AsyncOperation asyncOp;
bool Flg = false;
DateTime startDt = DateTime.Now;
private void Form1_Load(object sender, EventArgs e)
{
this.DisplayTimer.Elapsed += new System.Timers.ElapsedEventHandler(DisplayTimer_Elapsed);
this.asyncOp = AsyncOperationManager.CreateOperation(this);
}
private void DisplayTimer_Elapsed(object sender, EventArgs e)
{
Random rd = new Random();
this.asyncOp.Post((obj) =>
{
this.label1.Text = rd.Next(0, 100).ToString();
if (DateTime.Now >= startDt.AddSeconds(10))
{
System.Console.WriteLine("再来一次!");
startDt = DateTime.Now;
}
}, null);
}
private void button1_Click(object sender, EventArgs e)
{
this.startDt = DateTime.Now;
if (Flg)
{
// 接受WiFi数据
Flg = false;
this.DisplayTimer.Stop();
Task.Factory.StartNew(() =>
{
while (!Flg)
{
Random rd = new Random();
this.asyncOp.Post((obj) =>
{
this.label1.Text = rd.Next(100, 200).ToString();
}, null);
Thread.Sleep(500);
if (DateTime.Now >= startDt.AddSeconds(10))
{
System.Console.WriteLine("接受新的数据");
startDt = DateTime.Now;
}
}
});
}
else
{
//监视开始
this.DisplayTimer.Start();
Flg = true;
}
}