_cefGlueBrowser.LoadEnd += (s, e) =>
{
BeginInvoke(new Action(() =>
{
MyCefStringVisitor visitor = new MyCefStringVisitor(this, m_url);
e.Browser.GetMainFrame().GetSource(visitor);
loaded = true;
}));
};
但问题是 Event Handler 被调用了很多次。例如,在每个 JS 重新加载之后。如何删除多个调用。如何只调用一次 LoadEnd
事件。
我试试
_cefGlueBrowser.LoadEnd -= delegate { };
但不工作。
我能做什么?我只想调用一次!
最佳答案
EventHandler handler = null;
obj.SomeEvent += handler = (s, e) => {
obj.SomeEvent -= handler;
// more stuff
};
这是有效的,因为它是我们捕获的变量(词法闭包),而不是变量在任何特定时间的值。
关于C# 在调用后删除事件处理程序或只调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20717654/