IoT用のVS2017テンプレートを使用してラズベリーパイで実行するUWPバックグラウンドアプリを作成しています。私は非同期メソッドにアクセスする必要があるので、アプリケーションはシリアルポート上のArduinoからのデータをリッスンします。UWPでの非同期コールバックグラウンドアプリケーション
コンパイルするコードを取得する唯一の方法は、私の非同期 "Listen()"メソッドの戻り値の型をvoidにすることですが、Run()メソッドのListen() FromIdAsync()に到達するとブロックされます。戻り値の型Task, or Task<T>
をしようとすると
public async void Run(IBackgroundTaskInstance taskInstance)
{
// Create the deferral by requesting it from the task instance.
BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
ListenAsync();
deferral.Complete();
}
private async void ListenAsync()
{
// some more code.....
serialPort = await SerialDevice.FromIdAsync(deviceID);
}
私は、コンパイラのエラーを取得:
Severity Code Description Project File Line Suppression State
Error Method 'RMSMPBackgroundApp.StartupTask.ListenAsync()' has a parameter of type 'System.Threading.Tasks.Task' in its signature. Although this type is not a valid Windows Runtime type, it implements interfaces that are valid Windows Runtime types. Consider changing the method signature to use one of the following types instead: ''. RMSMPBackgroundApp C:\Users\Dan.Young\documents\visual studio 2017\Projects\RMSMPBackgroundApp\RMSMPBackgroundApp\StartupTask.cs 41
をいくつかの記事が示唆するように私も聞く()メソッドをプライベートにすることを試みました。
私は非同期プログラミングに比較的新しいので、何か明白なものを紛失していなければなりませんか?
ありがとうございました。
しかし、これは私のために働いていません。私はまだタスクが有効なWindowsランタイムタイプではないというエラーを受け取ります。 runメソッドと 'using'ステートメントを含むコード全体を提供して、何か不足しているかどうかを確認できますか?ありがとう。 –