2016-08-30 7 views
1

他のアプリからのオーディオファイルを受け入れるxamarin iOSアプリがあります。たとえば:それは郵送用のアプリケーションからオーディオ(.mp3)ファイルを受け入れます。 OpenURLメソッドでは、ファイルを保存してxmlファイルに新しいエントリを作成する機能があります。私が想定しているこの作業は17秒以上かかるので、アプリケーションがクラッシュします。iOSのアプリデリゲートメソッドが17秒以上かかる

public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation) 
{ 
     return this.Upload(url).Result; 
} 

async public Task<bool> Upload(NSUrl SharedUri) 
{ 
     await SomeUploadTask(); 
     return true; 
} 
+2

あなたはアプリをブロックしているように聞こえますが、別のスレッドでこの機能を非同期処理として実行する必要があります。このタスクがバックグラウンドで実行されている間、あなたは17秒以内にあなたの機能に戻ることができます。おそらく、これはhttps://developer.xamarin.com/guides/cross-platform/advanced/async_support_overview/ – Hodson

+1

@ Hodsonに役立ちます。クイックレスポンスをありがとう、私はopenURLメソッドでタスクを待つことができません、私はエラーが表示されます: 'The 'await'演算子は、非同期メソッド内でのみ使用できます。このメソッドを 'async'修飾子でマークし、その戻り値の型を 'Task 'に変更します。openURL非同期メソッドを作成すると、新しいエラーがスローされます。 – Arti

+0

@Arti解決策を見つけましたか?投稿できますか? – Lijo

答えて

0

あなたはこれを試すことができ、

私はこれが動作するかどうかを確認していないか:AppDelegate.csここ

// You have 17 seconds to return from this method, or iOS will terminate your application.内のコメントはあり

はAppDelegate.csのコードですない。

もっと時間をかけてメソッドをブロックしないようにしましょう。

関連する問題