元スレMicrosoft Silverlight その6
silverlight覧 / PC版 /みんなの評価 :
851 = :
まあできないだろうな
マックでアドビのソフト使ってるデザイナーの人たちはどう思ってるんだろうな
853 = :
<DIV ~>
<OBJECT しるばーらいとの>
</OBJECT>
</DIV>
だと、表示されて
<TABLE><TR><TD>
<DIV ~>
<OBJECT しるばーらいとの>
</OBJECT>
</DIV>
</TD></TR></TABLE>
だと表示されない。
真ん中に表示したいだけなのに..
どして??
854 = :
>>853
試してみた。
表示されないんじゃなくて、<td>要素の高さが足りていないんだと思う。
<td style="height: 480px">
とかにしてみるがヨロシ。
855 = :
そもそも真ん中に表示したいという理由でtable要素を使うのは云々
856 = :
かつては独禁法に引っかかるからムリだったけど
今はAppleとGoogleがあるから問題にならない、という記事を見たな
857 = :
でもDivでのセンタリングはブラウザごとに解釈違ってめんどくせえ
858 = :
ブロックレベル要素を明示的にセンタリング出来ない、CSSの仕様が腐ってるんだよなあ…
861 = :
だが、できると嬉しい
862 = :
昔XAML単体をダブルクリックしたら動くやつ、なかったけ
864 = :
サブスクにフォトショが入るなら大歓迎
865 = :
ブルスクとスクショが入るならもっと大歓迎
866 = :
WebClientを使って、Webサービスとデータのやり取りをおこなうシステムを考えています。
ざっと調べた感じ、標準では非同期処理によるデータの取得しかできないようです。
設計上、ここで同期取得処理を行いたいのです。
Threadを使えばどうにかすればできるかも、というところまでは調べました。
質問なのですが、Silverlightのポリシーとしては同期処理はしないほうが良いのでしょうか?
無理して同期処理をするよりも、非同期処理前提に設計を変えたほうが良いのかもと思ってます。
867 = :
>>854
いま別のところコーディング中なんで、
もうすこししたらためしてみる。
ありがとう。
868 = :
Silverlightの、というより、RIA 的にはあんまり同期処理しない。
設計から変えた方が無難。
まあ、非同期を同期化するのなら簡単よ。
AutoResetEvent で Wait するだけ。
869 = :
非同期できるならフラグ使って同期にすればいいだけ
871 = :
ビギナーは普通非同期のほうが難しいというのだが
872 = :
Silverlightに同期での通信が用意されてないんだから
「何とかして同期をとるか、非同期のまま使うか」てのは別に普通では
874 = :
875 = :
svgを変換したら
876 = :
>>874
素晴らしい!ありがとうございます。
>>875
そういう手もあるんですね。
選択肢が広がりそうです。ありがとうございます。
877 = :
皆さまご意見ありがとうございます
>>868
AutoResetEventのテストとして
http://www.melma.com/backnumber_120830_3919216/
このソースのMain部分をボタンイベントに置き換えてテストしてみたのですが、
WaitOneが呼ばれてから反応なし(Setが働いていない?)という状況になります。
現状はほぼ諦めてDownloadStringCompletedイベントから非同期処理を書いていますが、
AutoResetEventを適切に使用する方法をご存じの方、お教え頂ければと思います。
878 = :
>>877
Completed 側から Set() 呼んだ?
880 = :
>>878-879
サンプルで紹介したソースですが、
メインスレッドからBackgroundWorkerを使用して別スレッド実行となっています。
また別スレッド処理が完了した後、RunWorkerCompleted内でSetが行われています。
WaitOneをコメントアウトした場合(非同期)、RunWorkerCompleted処理が行われました。
WaitOneを行う場合、RunWorkerCompleted処理まで到達していないようです。
882 = :
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();
こんな感じでいけたはず
884 = :
まぁそういうことだな メインスレッドっていう表現で惑わされる
885 = :
なんというか、無理な気がしてきました・・・
http://d.hatena.ne.jp/n7shi/20090731/1248967824
ここのサンプルも試してみましたが、実行すると
「UIスレッドでのみ実行できます」
とのエラーでした。
WaitOneを使うためには、確かにみなさん仰るとおり、UIと別スレッドからの実行が必要。
WebRequest、WebClientを使うためにはUIスレッドからの呼び出しが必要。
実行条件が矛盾してしまっているんですよね…。
もうすこし考えてみます。
886 = :
手元で>>885のサンプルを試したけど、ちゃんと動くが?
887 = :
>>886
すみません、885のサンプル動きました。URI指定でミスってたのが原因でした。
明日改めて整理して試してみます。
888 = :
>>866 UIスレッドで終了を待つ同期通信は無理だよ。
SilverlightはUIスレッドをブロックすると、ブラウザごと固まってしまうしね。
ちなみにこんな場合の処理方法の1つとしてBusyIndicatorってのがある。
まぁ似たようなことを自前でやった方が楽かもしれんが。
http://www.silverlight.net/content/samples/sl4/toolkitcontrolsamples/run/default.html
889 = :
結論ですが、あきらめました。
下記ソースは>>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;
}
891 = :
非同期コールバックのほうが便利だと思うけど、
初心者にはわかりにくいのかね
892 = :
イベントドリブンです
893 = :
なんでもイベントなのは実際不便でしょ
だからReactive Extensionsなんてものが出てくる
894 = :
処理が重くならないのなら同期の方が記述も単純で楽だわ。
その間UIが固まるのも、ある意味アトミックで扱いやすいだろう。
まぁクロージャで楽ができるし、BusyIndicatorみたいなやり方でどうとでもなるから、
困ってはいないけど。
895 = :
フリーズせずにちゃんと無効にしてくれる同期メソッドがあればいいのに。
「応答なし」はさすがにいかん
896 = :
同期なんて誰も使わないと思って実装してないんだろうな
898 = :
非同期使うにしても、コードが見渡しやすいようラップして同期に近いコードになるようにするよね。普通は。
900 = :
非同期で完了したら次の処理を行えば同期になるだろ
類似してるかもしれないスレッド
- 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 ○
トップメニューへ / →のくす牧場書庫について