返回循环进程的方法

时间:2014-11-16 22:48:46

标签: c# loops events delegates handlers

我正在创建一个带有方法的类库,例如OnetoTen(),它基本上是一个从1到10的for循环计数。我想要实现的是从以下方法调用此方法另一个程序,让它输出for循环当前的数字/迭代次数。

代表/活动的使用是否正确?

1 个答案:

答案 0 :(得分:3)

您可以使用回调(委托)或事件。

使用回调的示例:

class Program
{
    static void Main(string[] args)
    {
        var counter = new Counter();

        counter.CountUsingCallback(WriteProgress);

        Console.ReadKey();
    }

    private static void WriteProgress(int progress, int total){
        Console.WriteLine("Progress {0}/{1}", progress, total);
    }
}

public class Counter
{
    public void CountUsingCallback(Action<int, int> callback)
    {
        for (int i = 0; i < 10; i++)
        {
            System.Threading.Thread.Sleep(1000);
            callback(i + 1, 10);
        }
    }

}

使用事件的示例:

class Program
{
    static void Main(string[] args)
    {
        var counter = new Counter();
        counter.ProgessTick += WriteProgress;

        counter.CountUsingEvent();

        Console.ReadKey();
    }

    private static void WriteProgress(int progress, int total){
        Console.WriteLine("Progress {0}/{1}", progress, total);
    }
}

public class Counter
{
    public event Action<int, int> ProgessTick;

    public void CountUsingEvent()
    {
        for (int i = 0; i < 10; i++)
        {
            System.Threading.Thread.Sleep(1000);
            if (ProgessTick != null)
                ProgessTick(i + 1, 10);
        }
    }

}