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

C# 在主应用程序和库之间来回移动数据,c#,.net,multithreading,C#,.net,Multithreading,我正在寻找关于如何为程序实现某些功能的想法 基本上,我有一个主程序/线程,它对一个库进行异步调用,我还可以控制该库进行一些处理。但是,从这个调用中,我需要库每隔一段时间对主线程进行一次回调,以获取更多数据。我如何才能做到这一点?因此,请传递一个回调以供库使用。例如: public class Program { static public void Main() { var library = new Library(); library.Call

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


基本上,我有一个主程序/线程,它对一个库进行异步调用,我还可以控制该库进行一些处理。但是,从这个调用中,我需要库每隔一段时间对主线程进行一次回调,以获取更多数据。我如何才能做到这一点?

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

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);
        }
    }
}    

首先,请共享您迄今为止实现的代码。如果不了解库,则无法回答此问题。请给我们看看库和一些关于如何打电话的代码。我无法发布库,因为它的业务逻辑和他们不喜欢发布代码。然而,@john wu的回答是完美的