Coder Coder - 3 months ago 49
C# Question

Cannot implicitly convert type System.EventHandler to System.EventHandler<object> error

I am trying to implement a Timer in windows phone app.It works fine in Windows Phone App(Silverlight) but it isnt working in Windows Phone Blank App.But it gives me following error-

Cannot implicitly convert type System.EventHandler to System.EventHandler<object>


This is my code -

namespace Timer
{
public partial class MainPage : Page
{
DispatcherTimer mytimer = new DispatcherTimer();
int currentcount = 0;
public MainPage()
{
InitializeComponent();

mytimer = new DispatcherTimer();
mytimer.Interval = new TimeSpan(0, 0, 0, 1, 0);
mytimer.Tick += new EventHandler(mytime_Tick);
//HERE error comes Cannot implicitly convert type System.EventHandler to System.EventHandler<object>
}

private void mytime_Tick(object sender,EventArgs e)
{
timedisplayBlock.Text = currentcount++.ToString();
}

private void startButton_Click(object sender, RoutedEventArgs e)
{
mytimer.Start();
}
}
}


I tried Cannot implicitly convert type 'System.EventHandler' to 'System.EventHandler<object>' for storyboard complete

But it even helped.How can I fix this error?

Answer

Referencing the method handler for the event directly will infer the type, satisfying the generic type declaration requirement.

mytimer.Tick += mytime_Tick;

Alternatively, explicitly declaring the generic type and using the generic EventHandler constructor,

mytimer.Tick += new EventHandler<object>(mytime_Tick);

would do the trick.

In addition, according to the documentation, your handler has the wrong signature. It should be:

private void mytime_Tick(object sender,object e)
{
    timedisplayBlock.Text = currentcount++.ToString();    
}