WebAPI Sample (3)
マルチスレッド処理
- Visual Studioなどの開発環境を使用して、C#のWeb APIプロジェクトを作成します。
- Web APIコントローラを作成し、POSTリクエストを処理するエンドポイントを作成します。例えば、以下のようになります:
- このコードは、POSTリクエストを受け取ると、非同期スレッドで
RunExternalExecutable
メソッドを呼び出し、EXEプログラムにデータを渡します。また、処理中の場合は”処理中…”というメッセージを返します。エラーが発生した場合は適切なエラーレスポンスを返すこともできます。 - EXEプログラムの実装は、特定の要件に基づいて行う必要があります。必要に応じて、EXEプログラムが非同期に実行されるように調整してください。また、エラーハンドリングやログ記録などの追加の処理も実装してください。
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;
public class ApiController : ApiController
{
[HttpPost]
public async Task<IHttpActionResult> ProcessData()
{
try
{
// リクエストデータを非同期で読み取る
var requestData = await Request.Content.ReadAsStringAsync();
// EXEプログラムにデータを渡すための非同期タスクを開始する
Task.Run(() => RunExternalExecutable(requestData));
// 処理中を示すレスポンスを返却する
return Ok("処理中...");
}
catch (Exception ex)
{
// エラーハンドリングを行う
return InternalServerError(ex);
}
}
private void RunExternalExecutable(string data)
{
try
{
// EXEプログラムを起動し、データを渡す処理を行う
// 例:Process.Start("YourExecutable.exe", data);
// ここでEXEプログラムの実行が終了するまで待機する場合、Task.Wait()を使用できる
// Task.Wait();
// EXEプログラムの結果をログに記録するなどの処理を追加できる
}
catch (Exception ex)
{
// エラーハンドリングを行う
// 例:ログにエラーメッセージを記録する
}
}
}