在主应用程序和库之间来回移动数据

时间:2019-02-20 03:21:46

标签: c# .net multithreading

我正在寻找有关如何为程序实现某些功能的想法。

基本上,我有一个主程序/线程,它对库(我也有控制权)进行异步调用以进行一些处理。但是,从该调用中,我需要该库每隔一段时间对主线程进行一次回调,以获取更多数据。我该怎么办?

1 个答案:

答案 0 :(得分:0)

因此传递一个回调供库使用。例如:

public class Program
{
    static public void Main()
    {
        var library = new Library();
        library.Callback = GetMoreData;
        var task = Task.Run( () => library.Foo() );
        Console.WriteLine("Other thread is running.");
        task.Wait();
    }

    static string GetMoreData()
    {
        return "More data";
    }
}



class Library
{
    public Func<string> Callback { get; set; }

    public async Task Foo()
    {
        for (int i=0; i<10; i++)
        {
            var moreData = Callback();
            Console.WriteLine("Library received this data: {0}", moreData);
            await Task.Delay(500);
        }
    }
}    

Example on DotNetFiddle