为什么我要求"请求对象引用"有这个事件吗?

时间:2016-12-20 09:07:28

标签: c# multithreading events

我试图使用从第二个帖子引发的自定义事件。以下是代码的相关部分:

delegate void SearchCompleteHandler(Dictionary<string, List<string>> results);
event SearchCompleteHandler SearchComplete;

public static void Search()
{
    Dictionary<string, List<string>> result = new Dictionary<string, List<string>>();
    SearchComplete?.Invoke(result);
}

SearchComplete = new SearchCompleteHandler(ShowSearchResults);
SearchComplete += new SearchCompleteHandler(ShowSearchResults);
dupeSearchThread = new System.Threading.Thread(Search);
dupeSearchThread.Start();

我在这一行收到错误:

SearchComplete?.Invoke(result);

VS说&#34;这个非静态属性需要一个对象引用&#34; (近似翻译)。

我认为在使用之前为事件添加Handler就足够了。我该怎么办?

1 个答案:

答案 0 :(得分:2)

这是因为你引用了一个非静态的对象:你应该从Search方法中删除关键字static,以便在你的类的实例中访问它,从而使它能够访问所有变量和对象都在其中实例化。