我正在尝试将其转换为C#代码:
等待5秒,然后从银行账户中扣款。
我有种感觉我快到了..。但这不管用。我这样做是对的吗?
public override void Process(BankAccount b, decimal amount)
{
DateTime present = DateTime.Now;
DateTime addFiveSeconds = DateTime.Now.AddSeconds(5);
if (present != addFiveSeconds)
{
this.Status = TransactionStatus.Pending;
}
else
{
b.Debit(amount);
this.Status = TransactionStatus.Complete;
}
}发布于 2011-11-23 07:05:46
我认为上面的答案有缺陷,它挂断了主线,在大多数情况下,它是危险的。您应该为这个延迟任务启动一个新线程,在线程进程中,休眠30秒,然后在第二个线程中完成工作。
发布于 2011-11-23 06:32:43
使用Thread.Sleep(5000)来挂起一个线程5秒钟,而不是你的代码-它有几个逻辑错误。
在执行该行时,present将是DateTime.Now的值,而add30Seconds将是该行执行时DateTime.Now的值加上5秒。
这些变量不会更新,也不会更改它们的值。
这意味着present永远不会对add30Seconds执行==操作。
发布于 2011-11-23 06:32:33
那么你的要求是等待30秒后再借记吗?如果是这样的话,看看Timer类。您可以将间隔设置为30秒,并在触发时执行您的操作。
http://www.dijksterhuis.org/using-timers-in-c/
然而,30秒的等待似乎是一个可怕的长时间?这是课程作业要求吗?
https://stackoverflow.com/questions/8234793
复制相似问题