In my code I need to unregister and register an event handler, This works perfect:
_favoritsImageView.Click -= _favoritsImageView_Click(this, new CustomeClickEventArgs(item));
_favoritsImageView.Click += _favoritsImageView_Click(this, new CustomeClickEventArgs(item));
void _favoritsImageView_Click(object sender, CustomeClickEventArgs e)
{
// handles the event
}
But for an awaitable event handler i have to use this syntax:
_favoritsImageView.Click -= async (s, e) =>
{ await _favoritsImageView_ClickAsync(s, new CustomeClickEventArgs(item)); };
_favoritsImageView.Click += async (s, e) =>
{ await _favoritsImageView_ClickAsync(s, new CustomeClickEventArgs(item)); };
async Task _favoritsImageView_ClickAsync(object sender, CustomeClickEventArgs e)
{
// does async task
}
This does not work. Because anonymous methods do not have the same reference. So the first line does not un-register the already registered handler. And eventually the second line adds an extra event handlers to the click.
Which syntax do I need to use to add and remove an async event handler?
Thanks for any suggestion.