C# 如何从另一个类调用实时流方法
我需要将对实时流式Firebase数据库的调用集中在一个类中,并从另一个类调用这些方法。该方法旨在“侦听”Firebase中的节点,然后在更新时发布到应用程序日志 然而,我目前的设置注意到它是同步的,并且在应用程序运行时返回null。我如何才能使此设置正常工作 TestFirebaseActions流类,方法: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
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