MVCプロジェクトでは、イメージの配列を生成し、セッション変数として配列を格納し、スライドバーを使用してイメージをアニメートし、マウスの動きを検出するマウスがキャンバス上を移動している間の最初のクリックとxの位置の間。私はアヤックスを使用するビューからMVC4 Ajaxが次のプロセスを実行する前に待機する
public ActionResult Animate(int slice = 0, int udm = 0)
{
FileContentResult data;
Image objImage = null;
Bitmap im = null;
try
{
im = MySession.Current.imageArray[slice];
....
MySession.Current.image = im;
}
else
{
return RedirectToAction("Index",new {.... });
}
}
catch { }
return null;
}
と
public ActionResult ImageOut(int udm = 0)
{
FileContentResult data;
Image objImage = null;
Bitmap im = null;
im = MySession.Current.image;
...
objImage = im.Bitmap(outputSize, PixelFormat.Format24bppRgb, m);
MemoryStream ms1 = new MemoryStream();
using (var memStream = new MemoryStream())
{
objImage.Save(memStream, ImageFormat.Png);
data = this.File(memStream.GetBuffer(), "image/png");
}
objImage.Dispose();
return data;
}
::私が使用して、コントローラで
私は2つの問題を抱えている
$.ajax({
url: '/Home/Animate',
type: 'POST',
async: false,
data: {
slice: ((lastX - firstX) + nSlice),
udm: ++udm
},
success: function(data) {
if (data.udm) {
nSlice = (data.slice);
image.src = '/Home/ImageOut?' + $.param({
udm: data.udm
});
}
},
error: function() {
}
});
は、まずそれが更新するのに時間がかかりますビューといくつかの画像をスキップし、2番目は多くのスレッドを開いていると、同じページにアクセスするユーザーの数遅くなる。私はasyncを使用することを考えましたが、私はまだC#4を使用しています。これは私のコードに多くの変更を必要とするかもしれません。私はSignalRについて読んでいましたが、私の質問はこれを行うことができます(私はすべてのユーザーではなくユーザーの画面を更新するだけです)、またはより良い解決策があります。
私が達成したいイベントのシーケンスは次のとおりです。
- アヤックスはその後、アヤックスが成功を受け、最初のアクションにリクエストを送信したり、最初の画像を生成し、画像が生成されると
- を待ちます
- 第二のアクションを使用して画面上に画像を表示そして最初のアクションは、私が見る課題は、IMAを生成する第1の画像キープある
私はVS2012 C#5をインストールしましたが、私に役立つ例はありますか?おかげさまで、あなたの提案を感謝します。 TPLを使用して
SignalRは、1-1メッセージで必要と思われるものと比べて、1対多のメッセージ、購読/公開/ブロードキャストに最適なソリューションです。 async/awaitを利用するには、.NET 4.5へのアップデートは問題ありません。それ以外の場合は、TPL(Task Paralell Library)を.NET 4フレームワークのTask.Factory.StartNewメソッドで常に使用できます。 – ianaldo21
残念ながら、VS2010は4.5をサポートしていません。 – hncl
これは問題ありません.TPLを試してみましたか? – ianaldo21