Trong mã của tôi, tôi cần phải hủy đăng ký và đăng ký một xử lý sự kiện, này hoạt động hoàn hảo:Làm cách nào để hủy đăng ký và đăng ký trình xử lý Sự kiện đang chờ xử lý?
_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
}
Nhưng đối với một awaitable handler sự kiện tôi phải sử dụng cú pháp sau:
_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
}
này không không làm việc. Bởi vì các phương thức nặc danh không có cùng tham chiếu. Vì vậy, dòng đầu tiên không hủy đăng ký trình xử lý đã đăng ký. Và cuối cùng dòng thứ hai thêm một trình xử lý sự kiện bổ sung cho nhấp chuột.
Tôi cần sử dụng cú pháp nào để thêm và xóa trình xử lý sự kiện không đồng bộ?
Cảm ơn mọi đề xuất.
Tôi nhầm lẫn, cú pháp mà bạn nói "hoạt động hoàn hảo" không thể hoạt động. Trừ khi '_favoritsImageView_Click' là một phương thức trả về một đại biểu, điều này sẽ thực sự kỳ lạ. – svick
@svick Tôi đã thêm '_favoritsImageView_Click' vào mã mẫu. Whats sai với điều đó ?? –
Có gì sai là dòng '_favoritsImageView.Click + = _favoritsImageView_Click (điều này, CustomeClickEventArgs mới (mục));' sẽ không biên dịch. – svick