コード付きのポータブルクラスライブラリ(net40 + sl4 + win8 + wp71)があります:
public static async Task<Dictionary<string, FeedItem>> GetFeeds()
{
try
{
string data;
using (HttpMessageHandler handler = new HttpClientHandler())
{
using (HttpClient httpClient = new HttpClient(handler))
{
data = await httpClient.GetStringAsync(FeedsUrl + Guid.NewGuid()).ConfigureAwait(false);
}
}
if (data != null)
{
//...
}
return null;
}
catch
{
return null;
}
}
Microsoft.Bcl、Microsoft.Bcl.Async、および Microsoft.Net.Http が参照されます。
Windows 8 Metro アプリでこのライブラリを使用しています。次に、VS2012 でアプリをデバッグしますが、問題ありません。しかし、アプリ パッケージを作成してインストールすると、最初の起動時にアプリが毎回エラーでクラッシュします。
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Runtime.InteropServices.COMException
Stack:
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__1(System.Object)
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
編集:「data = await httpClient.GetStringAsync」という行にコメントを付けると、例外なく機能します。
2回目の起動では、常に機能します。
なにか提案を?