我有一个应用程序,我将向服务器发送一条SMS,它将以SMS的形式返回结果。所以我在事件处理程序中添加了一个Message Intercepter。问题是,一旦我发送请求,我必须等待30秒才能继续操作。如何使我的应用程序等到那。如果我使用Thread.sleep它使整个应用程序睡眠,我没有得到任何响应。
知道如何解决这个问题
先谢谢 问候 六必居
答案 0 :(得分:0)
听起来你可以使用某种计时器。如果您需要在UI线程中执行代码,可以使用System.Windows.Forms.Timer;如果您对它在线程池线程中执行感到满意,可以使用System.Threading.Timer或System.Timers.Timer。
我不知道Compact Framework中有哪些可用,但我希望其中至少有一个可用。
如果它们真的不可用,一个有点hacky但可以工作的选项是创建一个新的线程,它只能睡30秒,然后执行你需要的代码或编组到UI线程(使用Control。如有必要,调用/ BeginInvoke)执行。它就像你可以得到的粗略的计时器,但它应该工作。
答案 1 :(得分:0)
事件应该异步触发,因此您的程序会继续。您可以让事件处理程序设置一个标志,以便在程序正在执行的任何路径上继续。
另外,作为旁注,如果你发现自己在想“gee,Thread.Sleep(1000)
在这里会很好用”,请退后一步,检查一下情况。大多数情况下,您可以与事件异步进行。
答案 2 :(得分:0)
我认为你要做的是阻止用户前进,直到他们收到来自SMS的有效响应,如果没有收到响应,则会以30秒的超时进行某种身份验证。
要执行此操作,您可以显示一个模式对话框,该对话框仅显示“等待SMS响应..”消息,并在30秒后关闭对话框(使用计时器)或从SMS接收响应。