私はasyncを非同期的に待機して実装しています。私はC#4.6を使用しています。非同期待機ボタンは常に同期的に実行されます。
これで、async-awaitを追加した後、ページは常に同期して実行されます。 apiが結果を返すのを待っていて、メッセージを画面に表示します。
私が探しているのは、このページがスレッドを起動し、応答性があるということです(私は他のビットも使えます)。完了すると、結果が表示されます。
以下は、私のボタンクリック、HTTPコール(非同期reqを開始する)、およびAPIメソッドです。
私は
- を持っては例のStackOverflowや他のフォーラムで解決策を探したhttps://msdn.microsoft.com/en-us/library/hh191443.aspx
- を追いました。私はそれを(もちろん私は:(おりません)同じようにやっていると信じています。
追加Async="true"
aspxページで。
ボタンをクリックし
protected async void btnCopy_Click(object sender, EventArgs e)
{
await RunAsync(Guid.Parse(SourceBusinessID), Guid.Parse(DestinationBusinessID), false);
if (lblError.Text == "")
{
lblError.Text = "Copy Completed!";
}
}
public async Task RunAsync(Guid SourceBusinessID, Guid DestinationBusinessID,bool copyAdviser)
{
using (var client = new HttpClient())
{
var request = new HttpRequestMessage()
{
RequestUri = new Uri("http://localhost:52140/api/DummyAccounts/"),
Method = HttpMethod.Get,
};
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
client.Timeout = TimeSpan.FromSeconds(500);
var response = await client.SendAsync(request);
if (!response.IsSuccessStatusCode)
{
lblError.Text = response.StatusCode.ToString();
}
}
}
API
public IHttpActionResult Get(Guid sourceBusinessID, Guid destinationBusinessID,bool copyAdviser = true)
{
try
{
CopyHelper.SourceBusinessID = sourceBusinessID;
CopyHelper.DestinationBusinessID = destinationBusinessID;
CopyHelper.CopyAdviser = copyAdviser;
logger.Info("Copy buisness started:" + DateTime.Now);
bool status = CopyBusinessService.CopyBusiness(CopyHelper.SourceBusinessID, CopyHelper.DestinationBusinessID, CopyHelper.CopyAdviser);
if (status)
{
logger.Info("Copy business finished:" + DateTime.Now);
return Ok(true);
}
else
{
logger.Info("Copy business failed:" + DateTime.Now);
return Ok(false);
}
}
catch (Exception ex)
{
return InternalServerError(ex);
}
}
ご協力いただければ幸いです。
私はあなたが少し混乱するかもしれないと思います。Stephen Clearyの[AsyncはHTTPプロトコルを変更しない](http://blog.stephencleary.com/2012/08/async-doesnt-change-http-protocol.html)を読むことをお勧めします。 –
ありがとう@Damien_The_Unbeliever本当に役に立ちました。 – chunky