c# - 使用通用回调是一种不好的形式吗?

标签 c# multithreading generics callback

我有这段代码(好吧,类似的东西)。

private delegate void GenericCallback<T>(T Info);

private void DoWork()
{
    System.Threading.Thread Worker = new System.Threading.Thread(
            delegate() 
            {
                TestMethod(TestMethodCallback<string>);
            }
    );
    Worker.Start();
}

private void TestMethod(GenericCallback<string> Callback)
{
    System.Threading.Thread.Sleep(1000);
    if(Callback != null)
    {
        Callback("Complete");
    }
}

private void TestMethod(GenericCallback<int> Callback)
{
    System.Threading.Thread.Sleep(1000);
    if(Callback != null)
    {
        Callback(25);
    }
}

private void TestMethodCallback<T>(T Info)
{
    MessageBox.Show(Info.ToString());
}

这允许我根据参数的类型调用不同版本的 TestMethod,同时还允许我有一个回调方法。

这是一种错误的形式,还是一种公认​​的做法?

最佳答案

看起来您可能正在寻找 Action delegate type .它基本上就是您所拥有的:一个通用的返回 void 的委托(delegate)类型。

关于c# - 使用通用回调是一种不好的形式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12199290/

相关文章:

java - Java中如何在子类中引用父类(super class)的泛型类型?

c# - 如何从 BGR 数据创建 .NET 位图

c - C 中的 tcp 客户端/服务器中带有线程的字符串

java - 如果线程本身不请求锁,它可以更改 java 锁定的对象数据吗?

java - 如何在多线程环境下使用JedisPool创建多个Jedis实例

java - 重写泛型类中的方法

Java泛型类型推导错误

c# - 在 C# 中使用 Web 服务将用户添加到 SharePoint 组对我不起作用

c# - 如何在 C# 中获取对象的子对象?

c# - 以不同用户身份运行的 selenium web 驱动程序未获取用户的配置文件/ session