私は、いくつかの画像を処理するプロセスを起動するためにWebサービスへの呼び出しを使用します。 このプロセスは10分かかるので、asp.netクライアントが待機しないようにします。レスポンスに興味がない場合にwebserviceへの非同期呼び出しを使用
私がしたことは、処理を開始するサービスに対して単純な非同期呼び出しでした。
しかし、ConvertToCubeServiceサービスを開始するのは面倒ではないようです。 ConvertToCubeServiceはワークフローサービスです。別のワークフローサービスのアクティビティから呼び出す。 私はこのコードがConvertToCubeServiceへの非同期呼び出しを置き換えると確信しています。
public sealed class CallProcessingAsync : CodeActivity
{
// Define an activity input argument of type string
public InArgument<string> EquirectangularImagePath { get; set; }
public InArgument<string> SaveImageDirectoryPath { get; set; }
public InArgument<string> ImageName { get; set; }
// If your activity returns a value, derive from CodeActivity<TResult>
// and return the value from the Execute method.
protected override void Execute(CodeActivityContext context)
{
// Obtain the runtime value of the Text input argument
ConvertToCubeService.ServiceClient client = new ConvertToCubeService.ServiceClient();
ConvertToCubeService.ConvertToCubeFaces param = new ConvertToCubeService.ConvertToCubeFaces();
var apPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
param.EquirectangularFilePath=apPath+context.GetValue(this.EquirectangularImagePath);
param.imageName = context.GetValue(this.ImageName);
param.SaveCubicFacesDirectory = apPath + context.GetValue(this.SaveImageDirectoryPath);
client.ConvertToCubeFacesCompleted += new EventHandler<ConvertToCubeService.ConvertToCubeFacesCompletedEventArgs>(client_ConvertToCubeFacesCompleted);
client.ConvertToCubeFacesAsync(param);//call async the server to do the work
using (var db = new panonestEntities())
{
var p = db.Panoramas.Where(x => x.ImageName.Equals(param.imageName)).First();
p.Status = "Called processing. wait";
db.SaveChanges();
}
}
void client_ConvertToCubeFacesCompleted(object sender, ConvertToCubeService.ConvertToCubeFacesCompletedEventArgs e)
{
using (var db = new panonestEntities())
{
}
}
}
実際には、WebサーバーはWindowsワークフローサービスとして実装されています。だから私はそれがそれに似た何かをすると思います。しかし問題は私が非同期メソッドを呼び出して、サービスが開始しないということです。 – Ryan
Gotcha、それは意味があります。どのようにサービスを開始しようとしているかについての情報を提供することができます。 – BNL
非同期呼び出しを行うアクティビティからのコードを追加しました – Ryan