【发布时间】:2012-05-16 20:13:41
【问题描述】:
我想调用一个每隔几秒返回一个值的方法。
我曾尝试将Timer 与elapsedEventandler 一起使用,但在这种情况下该方法的返回类型是无效的。我使用TimerTask 类在Java 中执行相同的任务。
我希望它在 .NET 2.0 中,因为我使用的是 Visual Studio 2005。
以下是我遇到问题的程序。我尝试使用匿名方法,但是这种情况下response的值在匿名方法之外不存在:
public static string Run(string address)
{
string response = "A";
Timer t = new Timer();
t.Elapsed += delegate
{
response = callURL(address);
console.writeln(response);
// The actual response value is printed here
};
t.Interval = 3000;
t.Start();
Console.WriteLine("response string is " + response);
// response string is A
return response;
}
public static string callURL(string address)
{
className sig = new ClassName();
String responseBody = sig.getURL(address);
return responseBody;
}
如何在Run方法中获取response的值并发送给Run方法的调用者?
【问题讨论】:
-
返回到哪里?计时器可以启动你的方法,但没有人会直接调用它来接收它的结果。
-
是每5秒调用一次这个方法,还是返回后每5秒才调用一次?即,如果调用时间过长,调用是否可以堆叠?
-
@james:它从另一个类返回给调用者。
-
@DanielA.White:一个方法只能返回两次是什么意思
-
不过,我认为您缺少的要点是另一个类已经释放了对该方法的控制。计时器在不同的线程上运行。