私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレMicrosoft Silverlight その6
silverlight スレッド一覧へ / silverlight とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
まあできないだろうな
マックでアドビのソフト使ってるデザイナーの人たちはどう思ってるんだろうな
マックでアドビのソフト使ってるデザイナーの人たちはどう思ってるんだろうな
買収はないだろうけどFlashとの統合は期待
Flashプレイヤーに.NETが付いたらそれだけでシェア100%のOSの出来上がりだもんな
Flashプレイヤーに.NETが付いたらそれだけでシェア100%のOSの出来上がりだもんな
<DIV ~>
<OBJECT しるばーらいとの>
</OBJECT>
</DIV>
だと、表示されて
<TABLE><TR><TD>
<DIV ~>
<OBJECT しるばーらいとの>
</OBJECT>
</DIV>
</TD></TR></TABLE>
だと表示されない。
真ん中に表示したいだけなのに..
どして??
<OBJECT しるばーらいとの>
</OBJECT>
</DIV>
だと、表示されて
<TABLE><TR><TD>
<DIV ~>
<OBJECT しるばーらいとの>
</OBJECT>
</DIV>
</TD></TR></TABLE>
だと表示されない。
真ん中に表示したいだけなのに..
どして??
かつては独禁法に引っかかるからムリだったけど
今はAppleとGoogleがあるから問題にならない、という記事を見たな
今はAppleとGoogleがあるから問題にならない、という記事を見たな
>>862
それはloose xamlといってWPFの一種だな。silverlightではない。
それはloose xamlといってWPFの一種だな。silverlightではない。
WebClientを使って、Webサービスとデータのやり取りをおこなうシステムを考えています。
ざっと調べた感じ、標準では非同期処理によるデータの取得しかできないようです。
設計上、ここで同期取得処理を行いたいのです。
Threadを使えばどうにかすればできるかも、というところまでは調べました。
質問なのですが、Silverlightのポリシーとしては同期処理はしないほうが良いのでしょうか?
無理して同期処理をするよりも、非同期処理前提に設計を変えたほうが良いのかもと思ってます。
ざっと調べた感じ、標準では非同期処理によるデータの取得しかできないようです。
設計上、ここで同期取得処理を行いたいのです。
Threadを使えばどうにかすればできるかも、というところまでは調べました。
質問なのですが、Silverlightのポリシーとしては同期処理はしないほうが良いのでしょうか?
無理して同期処理をするよりも、非同期処理前提に設計を変えたほうが良いのかもと思ってます。
Silverlightの、というより、RIA 的にはあんまり同期処理しない。
設計から変えた方が無難。
まあ、非同期を同期化するのなら簡単よ。
AutoResetEvent で Wait するだけ。
設計から変えた方が無難。
まあ、非同期を同期化するのなら簡単よ。
AutoResetEvent で Wait するだけ。
MSが提供してるReactive Extensions試してみたら?
LINQをDSLとして使うことで非同期APIを同期APIのように扱うライブラリなんだけど
LINQをDSLとして使うことで非同期APIを同期APIのように扱うライブラリなんだけど
Silverlightに同期での通信が用意されてないんだから
「何とかして同期をとるか、非同期のまま使うか」てのは別に普通では
「何とかして同期をとるか、非同期のまま使うか」てのは別に普通では
皆さまご意見ありがとうございます
>>868
AutoResetEventのテストとして
http://www.melma.com/backnumber_120830_3919216/
このソースのMain部分をボタンイベントに置き換えてテストしてみたのですが、
WaitOneが呼ばれてから反応なし(Setが働いていない?)という状況になります。
現状はほぼ諦めてDownloadStringCompletedイベントから非同期処理を書いていますが、
AutoResetEventを適切に使用する方法をご存じの方、お教え頂ければと思います。
>>868
AutoResetEventのテストとして
http://www.melma.com/backnumber_120830_3919216/
このソースのMain部分をボタンイベントに置き換えてテストしてみたのですが、
WaitOneが呼ばれてから反応なし(Setが働いていない?)という状況になります。
現状はほぼ諦めてDownloadStringCompletedイベントから非同期処理を書いていますが、
AutoResetEventを適切に使用する方法をご存じの方、お教え頂ければと思います。
>>877
Completed 側から Set() 呼んだ?
Completed 側から Set() 呼んだ?
メインスレッドで動かしてない?
Silverlightでは、メインスレッドを止めて同期ダウンロードしようとするとデッドロックする
Silverlightでは、メインスレッドを止めて同期ダウンロードしようとするとデッドロックする
>>878-879
サンプルで紹介したソースですが、
メインスレッドからBackgroundWorkerを使用して別スレッド実行となっています。
また別スレッド処理が完了した後、RunWorkerCompleted内でSetが行われています。
WaitOneをコメントアウトした場合(非同期)、RunWorkerCompleted処理が行われました。
WaitOneを行う場合、RunWorkerCompleted処理まで到達していないようです。
サンプルで紹介したソースですが、
メインスレッドからBackgroundWorkerを使用して別スレッド実行となっています。
また別スレッド処理が完了した後、RunWorkerCompleted内でSetが行われています。
WaitOneをコメントアウトした場合(非同期)、RunWorkerCompleted処理が行われました。
WaitOneを行う場合、RunWorkerCompleted処理まで到達していないようです。
var request = WebRequest.CreateHttp(uri);
var wait = new ManualResetEvent(false);
AsyncCallback callback = ar => {
var response = request.EndGetResponse(ar);
ストリームを読み取る(response.GetResponseStream());
wait.Set();
};
request.BeginGetResponse(callback, null);
wait.WaitOne();
こんな感じでいけたはず
var wait = new ManualResetEvent(false);
AsyncCallback callback = ar => {
var response = request.EndGetResponse(ar);
ストリームを読み取る(response.GetResponseStream());
wait.Set();
};
request.BeginGetResponse(callback, null);
wait.WaitOne();
こんな感じでいけたはず
なんというか、無理な気がしてきました・・・
http://d.hatena.ne.jp/n7shi/20090731/1248967824
ここのサンプルも試してみましたが、実行すると
「UIスレッドでのみ実行できます」
とのエラーでした。
WaitOneを使うためには、確かにみなさん仰るとおり、UIと別スレッドからの実行が必要。
WebRequest、WebClientを使うためにはUIスレッドからの呼び出しが必要。
実行条件が矛盾してしまっているんですよね…。
もうすこし考えてみます。
http://d.hatena.ne.jp/n7shi/20090731/1248967824
ここのサンプルも試してみましたが、実行すると
「UIスレッドでのみ実行できます」
とのエラーでした。
WaitOneを使うためには、確かにみなさん仰るとおり、UIと別スレッドからの実行が必要。
WebRequest、WebClientを使うためにはUIスレッドからの呼び出しが必要。
実行条件が矛盾してしまっているんですよね…。
もうすこし考えてみます。
手元で>>885のサンプルを試したけど、ちゃんと動くが?
>>866 UIスレッドで終了を待つ同期通信は無理だよ。
SilverlightはUIスレッドをブロックすると、ブラウザごと固まってしまうしね。
ちなみにこんな場合の処理方法の1つとしてBusyIndicatorってのがある。
まぁ似たようなことを自前でやった方が楽かもしれんが。
http://www.silverlight.net/content/samples/sl4/toolkitcontrolsamples/run/default.html
SilverlightはUIスレッドをブロックすると、ブラウザごと固まってしまうしね。
ちなみにこんな場合の処理方法の1つとしてBusyIndicatorってのがある。
まぁ似たようなことを自前でやった方が楽かもしれんが。
http://www.silverlight.net/content/samples/sl4/toolkitcontrolsamples/run/default.html
結論ですが、あきらめました。
下記ソースは>>885のサンプルを修正したものから一部抜粋したものです。
やりたかったことは同期処理で取得したデータを同期的に本スレに戻すということなのです。
たしかに別スレッド内でWebRequestの同期取得はできました。ただ、この取得結果を
同期的に呼び出し元=本スレへ返せないんですよね・・・。
下記Thread.Joinをコメントアウトしていますが、これを実行するとロックがかかります。
private void button1_Click(object sender, RoutedEventArgs e){
textBox1.Text = getData("http://localhost:49698");
}
private string getData(string uri){
var text = "";
Thread testThread = new Thread(() =>{
var req = HttpWebRequest.Create(uri);
var res = req.GetResponse();
var sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
text = sr.ReadToEnd();
res.Close();
});
testThread.Start();
// testThread.Join();
return text;
}
下記ソースは>>885のサンプルを修正したものから一部抜粋したものです。
やりたかったことは同期処理で取得したデータを同期的に本スレに戻すということなのです。
たしかに別スレッド内でWebRequestの同期取得はできました。ただ、この取得結果を
同期的に呼び出し元=本スレへ返せないんですよね・・・。
下記Thread.Joinをコメントアウトしていますが、これを実行するとロックがかかります。
private void button1_Click(object sender, RoutedEventArgs e){
textBox1.Text = getData("http://localhost:49698");
}
private string getData(string uri){
var text = "";
Thread testThread = new Thread(() =>{
var req = HttpWebRequest.Create(uri);
var res = req.GetResponse();
var sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
text = sr.ReadToEnd();
res.Close();
});
testThread.Start();
// testThread.Join();
return text;
}
UIスレッド上で同期ダウンロードなんかWinFormsでもありえないだろ
ユーザーは普通それをフリーズと呼ぶ
ユーザーは普通それをフリーズと呼ぶ
なんでもイベントなのは実際不便でしょ
だからReactive Extensionsなんてものが出てくる
だからReactive Extensionsなんてものが出てくる
処理が重くならないのなら同期の方が記述も単純で楽だわ。
その間UIが固まるのも、ある意味アトミックで扱いやすいだろう。
まぁクロージャで楽ができるし、BusyIndicatorみたいなやり方でどうとでもなるから、
困ってはいないけど。
その間UIが固まるのも、ある意味アトミックで扱いやすいだろう。
まぁクロージャで楽ができるし、BusyIndicatorみたいなやり方でどうとでもなるから、
困ってはいないけど。
フリーズせずにちゃんと無効にしてくれる同期メソッドがあればいいのに。
「応答なし」はさすがにいかん
「応答なし」はさすがにいかん
非同期使うにしても、コードが見渡しやすいようラップして同期に近いコードになるようにするよね。普通は。
それでも、匿名メソッド/ラムダ式あれば十分じゃない?
欲を言えば Reactive Extensions が早く標準になって欲しいけど。
欲を言えば Reactive Extensions が早く標準になって欲しいけど。
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / silverlight スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- Microsoft Silverlight その9 (574) - [96%] - 2023/1/25 14:30
- Microsoft Silverlight その8 (996) - [96%] - 2011/11/12 23:46 ○
- Microsoft Silverlight その7 (1001) - [96%] - 2011/3/24 1:31 ○
- Microsoft Silverlight その5 (984) - [96%] - 2010/4/16 20:20 ☆
- Microsoft Silverlight その4 (1001) - [96%] - 2009/12/5 9:05 ○
- Microsoft Silverlight 2.0 その3 (556) - [83%] - 2009/3/24 0:35 ○
- Microsoft Silverlight 2.0 その2 (1001) - [78%] - 2008/11/21 11:47 ○
- Microsoft Silverlight 2.0 (1001) - [74%] - 2008/5/12 6:08 ○
- Silverlight登場で.NET使い大勝利!!! Part2 (525) - [18446744073709551603%] - 2016/10/16 0:30 ○
トップメニューへ / →のくす牧場書庫について