我已经开始了一份新工作,最后一个开发人员想要一个他开始完成的程序。
我遇到了这个问题并且已经看了半天。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
logTimer = new System.Windows.Threading.DispatcherTimer();
logTimer.Tick += new EventHandler(logTimer_Tick);
logTimer.Interval = new TimeSpan(0, 0, 0, 1);
logTimer.Start();
txtLogData.Text = Logger.GetLines();
try
{
DataProcessor gaugeProcessor = new DataProcessor(SQLConnectionString);
gaugeProcessors.Add(gaugeProcessor);
grdProcessor.ItemsSource = gaugeProcessors;
List<GaugePort> ports = SQLClient.GetGaugePorts(SQLConnectionString);
foreach(GaugePort port in ports)
{
GaugePortListener newListener = new GaugePortListener(port);
listeners.Add(newListener);
}
grdPorts.ItemsSource = listeners;
}
catch(Exception ex)
{
}
}
我在第4行和第34行收到错误;没有超载#39; logTimer_Tick&#39;匹配代表&#39;事件处理程序&#39;&#34;
它调用的函数剂量存在并且看起来像这样
private void logTimer_Tick(object sender, EventArgs e)
{
txtLogData.Text = Logger.GetLines();
}
我看过下面的链接,但我画了一个空白 http://www.yoda.arachsys.com/csharp/threads/parameters.shtml
任何想法都会很棒
提前致谢
编辑
更改错误消息&#34; Typo&#34;
的措辞答案 0 :(得分:0)
直接使用方法:
logTimer.Tick += logTimer_Tick;
这应该会有所帮助,因为编译器会对您的EventHandler执行奇怪的操作。
奇怪的是,您的代码似乎在我的机器上运行 - 这意味着您发布的代码不等于您尝试的代码,或者它是您的编译器导致的错误。或者,作为第三种可能性,logtimer
不是WinForms计时器,那么我无法重现您的问题。
在第三种情况下,第二个参数可能不是一个EventArg(尽管如果你不使用EventHandler的东西,它会很奇怪)。然后你可以尝试一个对象作为第二个参数:
private void logTimer_Tick (object sender, object e)
Windows phone 8.1(No overload for 'method' matches delegate 'System.EventHandler')似乎是必要的。