C# 如何从另一个类调用实时流方法

C# 如何从另一个类调用实时流方法,c#,firebase,xamarin,firebase-realtime-database,async-await,C#,Firebase,Xamarin,Firebase Realtime Database,Async Await,我需要将对实时流式Firebase数据库的调用集中在一个类中,并从另一个类调用这些方法。该方法旨在“侦听”Firebase中的节点,然后在更新时发布到应用程序日志 然而,我目前的设置注意到它是同步的,并且在应用程序运行时返回null。我如何才能使此设置正常工作 TestFirebaseActions流类,方法: String output; public async Task<String> realtimeStreamTest() { var observable = fi

我需要将对实时流式Firebase数据库的调用集中在一个类中,并从另一个类调用这些方法。该方法旨在“侦听”Firebase中的节点,然后在更新时发布到应用程序日志

然而,我目前的设置注意到它是同步的,并且在应用程序运行时返回null。我如何才能使此设置正常工作

TestFirebaseActions流类,方法:

String output;
public async Task<String> realtimeStreamTest()
{
    var observable = firebase
      .Child("driver_rate")
        .AsObservable<DriverRate>()
        .Subscribe(d => output = d.Object.driversRate);

    return output;
}
字符串输出;
公共异步任务realtimeStreamTest()
{
var可观测=火基
.儿童(“司机费”)
.AsObservable()
.Subscribe(d=>output=d.Object.driversRate);
返回输出;
}
调用方法并尝试从另一个类“侦听”:

public async void firebaseRealStreamTestMethod()
{

    TestFirebaseActions testFirebase = new TestFirebaseActions();

    Task<String> contentsTask = testFirebase.realtimeStreamTest();

    // await! control returns to the caller and the task continues to run on another thread
    string contents = await contentsTask;

    Log.Verbose("firebaseRealStreamTestMethod()", contents);

}
public异步void firebaseRealStreamTestMethod()
{
TestFirebaseActions testFirebase=新的TestFirebaseActions();
任务contentsTask=testFirebase.realtimeStreamTest();
//等待!控件返回调用方,任务继续在另一个线程上运行
字符串内容=等待内容STASK;
详细(“firebaseRealStreamTestMethod()”,内容);
}

我如何创建和调用以允许从另一个类中异步侦听此可观察对象?

您的
firebaseRealStreamTestMethod
async void
,而不是
async Task
是,因为它旨在发布到日志,查看方法中的最后一行。您可能应该使用
TaskCompletionSource
而不是
IOnservable
,或者在
IObservable
上调用
OnNext