```c#
string timeStr = m.Value.Substring(9, 12);
var ftimestr = string.Format("20{0}/{1}/{2} {3}:{4}:{5}",
timeStr.Substring(0, 2),
timeStr.Substring(2, 2),
timeStr.Substring(4, 2),
timeStr.Substring(6, 2),
timeStr.Substring(8, 2),
timeStr.Substring(10, 2));
DateTime time = Convert.ToDateTime(ftimestr);
Debug.WriteLine("卡号:" + id + "时间:" + time.ToString());
this.Dispatcher.Invoke(() =>
{
for (int i = 0; i < list.Count; i++)
{
if (list[i].ChipNumber==id)
{
DateTime retime = Convert.ToDateTime(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
TimeSpan timeNew = retime- time;
string[] timess = timeNew.ToString().Split(":");
int newtimes = Convert.ToInt32(timess[2]);
if (newtimes > Convert.ToInt32(settingValue_time))
{
if (numberOfTurns > 0)
{
Debug.WriteLine("减一");
}
}
}
}
});
程序在运行时,不会主动运行this.Dispatcher.Invoke(() =>后的内容,当断点在 this.Dispatcher.Invoke(() =>内部时,程序又能达到我想要的效果,希望有人能解答一下如何怎么才能让程序在没有断点的情况下也能执行this.Dispatcher.Invoke(() =>
要让程序在没有断点的情况下也能执行this.Dispatcher.Invoke(() =>,可以在程序中添加一个while循环,每次循环都会调用this.Dispatcher.Invoke(() =>,从而实现每次循环都会检查list中的ChipNumber和id是否相等,并计算出当前时间与time的时间差,如果大于设定的时间值,则将numberOfTurns减1。
本来也是不断点也能运行的,不信写个WriteLine看看到底运行了没有
之所以直接运行不能显示你想要的内容,肯定是执行顺序没搞对
话说,你这里除了打印个减一,就不干别的吗
这里不操作任何全局变量,也不改写任何控件,你怎么看它运行没运行呢