我不是一个习惯使用的C#程序员,所以如果这是愚蠢的,抱歉: - )
我正在为Windows 8开发一个C#应用程序。我需要做一个Web请求,因此,我有一个回调来处理请求数据。
我正在使用标准方法:
private static ManualResetEvent allDone = new ManualResetEvent(false);
private static void daCallback(IAsyncResult data) {
...
SampleDataSource.allDone.Set();
}
// This is the Class CONSTRUCTOR
public SampleDataSource() {
# before anything, reset allDone:
string request = "http://some.url.com";
HttpWebRequest webRequest = WebRequest.Create(request) as HttpWebRequest;
webRequest.Method = "POST";
webRequest.BeginGetResponse(new AsyncCallback(daCallback), webRequest);
Debug.WriteLine("Asked to begin get response");
SampleDataSource.allDone.WaitOne(12000);
Debug.WriteLine("Done Waiting");
#...
}
运行时,allDone(在do_something内)未初始化。我甚至添加了一个条件来比较allDone和null,是的,它是null。
“完成等待”消息根本不会打印...
我做错了什么?
谢谢
答案 0 :(得分:2)
您正在从实例方法调用静态字段。请改用YourClassName.allDone.Reset()
。
答案 1 :(得分:2)
您必须在调用allDone
之前添加类名,因为它是静态的。
而不是
allDone.Reset();
试
//replace CLASS with whatever you named your class
CLASS.allDone.Reset();
所有其他电话的等效方法。