You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#报CS0123无匹配RoutedEventHandler重载与CS0136变量冲突如何解决

问题修复方案

1. 修复CS0136报错

这个报错是因为UploadData_Click方法的入参已经用了sender和e作为参数名,后续定义SqlRowsCopied事件的匿名委托时,重复使用了相同的参数名,导致同作用域内变量命名冲突。
直接修改匿名委托的参数名即可,示例:

// 修改前
bcp.SqlRowsCopied += delegate (object sender,SqlRowsCopiedEventArgs e)
{
    Console.WriteLine(e.RowsCopied.ToString("#,##0") + " rows copied.");
};

// 修改后
bcp.SqlRowsCopied += delegate (object s, SqlRowsCopiedEventArgs args)
{
    Console.WriteLine(args.RowsCopied.ToString("#,##0") + " rows copied.");
};

2. 修复CS0123报错

这个报错是方法签名和RoutedEventHandler委托要求不匹配,按以下两点排查修改:

  • 检查MainWindow.xaml第17行绑定的Click事件方法名,确认和你写的UploadData_Click完全一致,没有拼写错误、大小写偏差
  • 确认.cs文件头部已引入System.Windows命名空间,或者直接把方法的参数类型写全,避免命名空间冲突:
// 全写参数类型避免命名空间引用错误
private void UploadData_Click(object sender, System.Windows.RoutedEventArgs e)
完整修改后代码
// 确保已引入所需命名空间
using System.Windows;
using System.Data.SqlClient;
using ChoETL; // ChoCSVReader对应的命名空间

private void UploadData_Click(object sender, RoutedEventArgs e)
{
    string connectionstring = @"{serverconnectionstring}";
    using (SqlBulkCopy bcp = new SqlBulkCopy(connectionstring))
    {
        using (var p = new ChoCSVReader(mainFile).WithFirstLineHeader())
        {
            bcp.DestinationTableName = "ReceiptDemo";
            bcp.EnableStreaming = true;
            bcp.BatchSize = 10000;
            bcp.BulkCopyTimeout = 0;
            bcp.NotifyAfter = 100;
            bcp.SqlRowsCopied += delegate (object s, SqlRowsCopiedEventArgs args)
            {
                Console.WriteLine(args.RowsCopied.ToString("#,##0") + " rows copied.");
            };
            bcp.WriteToServer(p.AsDataReader());
        }
    }
}

内容的提问来源于stack exchange,提问作者mully

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:36:04