のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:126,368,540人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレMicrosoft Silverlight その6

    silverlight スレッド一覧へ / silverlight とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - wcfRIAXAP + - デバッグ用のリソース文字列 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    851 : デフォルトの名無 - 2010/10/09(土) 21:08:13 (+57,+29,-21)
    まあできないだろうな
    マックでアドビのソフト使ってるデザイナーの人たちはどう思ってるんだろうな
    852 : デフォルトの名無 - 2010/10/09(土) 21:37:51 (+1,-26,-57)
    買収はないだろうけどFlashとの統合は期待
    Flashプレイヤーに.NETが付いたらそれだけでシェア100%のOSの出来上がりだもんな
    853 : デフォルトの名無 - 2010/10/09(土) 22:49:01 (+2,-30,-40)
    <DIV ~>
     <OBJECT しるばーらいとの>
    </OBJECT>
    </DIV>
    だと、表示されて
    <TABLE><TR><TD>
    <DIV ~>
     <OBJECT しるばーらいとの>
    </OBJECT>
    </DIV>
    </TD></TR></TABLE>
    だと表示されない。
    真ん中に表示したいだけなのに..
    どして??
    854 : デフォルトの名無 - 2010/10/09(土) 23:07:46 (+32,-30,-38)
    >>853
    試してみた。
    表示されないんじゃなくて、<td>要素の高さが足りていないんだと思う。

    <td style="height: 480px">

    とかにしてみるがヨロシ。
    855 : デフォルトの名無 - 2010/10/10(日) 00:26:06 (+18,-9,-5)
    そもそも真ん中に表示したいという理由でtable要素を使うのは云々
    856 : デフォルトの名無 - 2010/10/10(日) 00:42:38 (+57,+29,-55)
    かつては独禁法に引っかかるからムリだったけど
    今はAppleとGoogleがあるから問題にならない、という記事を見たな
    857 : デフォルトの名無 - 2010/10/10(日) 01:00:56 (+56,+28,-5)
    でもDivでのセンタリングはブラウザごとに解釈違ってめんどくせえ
    858 : デフォルトの名無 - 2010/10/10(日) 01:17:27 (+57,+29,-11)
    ブロックレベル要素を明示的にセンタリング出来ない、CSSの仕様が腐ってるんだよなあ…
    859 : デフォルトの名無 - 2010/10/10(日) 01:22:21 (-1,-29,-1)
    いっそXAMLがHTMLの代わりになればいいのに
    860 : デフォルトの名無 - 2010/10/10(日) 01:30:22 (-1,-29,-16)
    IEコンポーネントがネイティブ対応か
    861 : デフォルトの名無 - 2010/10/10(日) 04:52:01 (+52,+29,+0)
    だが、できると嬉しい
    862 : デフォルトの名無 - 2010/10/10(日) 04:56:24 (+2,-29,-8)
    昔XAML単体をダブルクリックしたら動くやつ、なかったけ
    863 : デフォルトの名無 - 2010/10/10(日) 12:06:20 (-1,-29,-20)
    >>862
    それはloose xamlといってWPFの一種だな。silverlightではない。
    864 : デフォルトの名無 - 2010/10/10(日) 16:37:25 (+57,+29,-13)
    サブスクにフォトショが入るなら大歓迎
    865 : デフォルトの名無 - 2010/10/10(日) 16:50:40 (+57,+29,-3)
    ブルスクとスクショが入るならもっと大歓迎
    866 : デフォルトの名無 - 2010/10/11(月) 11:06:21 (+119,+29,-99)
    WebClientを使って、Webサービスとデータのやり取りをおこなうシステムを考えています。
    ざっと調べた感じ、標準では非同期処理によるデータの取得しかできないようです。

    設計上、ここで同期取得処理を行いたいのです。
    Threadを使えばどうにかすればできるかも、というところまでは調べました。

    質問なのですが、Silverlightのポリシーとしては同期処理はしないほうが良いのでしょうか?
    無理して同期処理をするよりも、非同期処理前提に設計を変えたほうが良いのかもと思ってます。
    867 : デフォルトの名無 - 2010/10/11(月) 11:08:04 (+62,+29,-20)
    >>854
    いま別のところコーディング中なんで、
    もうすこししたらためしてみる。
    ありがとう。
    868 : デフォルトの名無 - 2010/10/11(月) 11:11:33 (+9,-29,-59)
    Silverlightの、というより、RIA 的にはあんまり同期処理しない。
    設計から変えた方が無難。

    まあ、非同期を同期化するのなら簡単よ。
    AutoResetEvent で Wait するだけ。
    869 : デフォルトの名無 - 2010/10/11(月) 11:30:03 (+55,+27,-4)
    非同期できるならフラグ使って同期にすればいいだけ
    870 : デフォルトの名無 - 2010/10/11(月) 12:05:35 (-1,-29,-66)
    MSが提供してるReactive Extensions試してみたら?
    LINQをDSLとして使うことで非同期APIを同期APIのように扱うライブラリなんだけど
    871 : デフォルトの名無 - 2010/10/11(月) 14:03:11 (+57,+29,-3)
    ビギナーは普通非同期のほうが難しいというのだが
    872 : デフォルトの名無 - 2010/10/11(月) 14:11:11 (+57,+29,-33)
    Silverlightに同期での通信が用意されてないんだから
    「何とかして同期をとるか、非同期のまま使うか」てのは別に普通では
    873 : デフォルトの名無 - 2010/10/11(月) 21:21:32 (-6,-29,-14)
    XAMLのアイコン集とか無いかな
    874 : デフォルトの名無 - 2010/10/11(月) 21:39:42 (+81,+30,+0)
    875 : デフォルトの名無 - 2010/10/11(月) 21:41:05 (+30,-29,-3)
    svgを変換したら
    876 : デフォルトの名無 - 2010/10/11(月) 21:52:24 (+67,+29,-16)
    >>874
    素晴らしい!ありがとうございます。

    >>875
    そういう手もあるんですね。
    選択肢が広がりそうです。ありがとうございます。
    877 : 866 - 2010/10/11(月) 21:56:02 (+8,-30,-110)
    皆さまご意見ありがとうございます
    >>868
    AutoResetEventのテストとして
    http://www.melma.com/backnumber_120830_3919216/
    このソースのMain部分をボタンイベントに置き換えてテストしてみたのですが、
    WaitOneが呼ばれてから反応なし(Setが働いていない?)という状況になります。

    現状はほぼ諦めてDownloadStringCompletedイベントから非同期処理を書いていますが、
    AutoResetEventを適切に使用する方法をご存じの方、お教え頂ければと思います。
    878 : デフォルトの名無 - 2010/10/11(月) 22:03:59 (+5,-29,-12)
    >>877
    Completed 側から Set() 呼んだ?
    879 : デフォルトの名無 - 2010/10/11(月) 22:07:26 (-1,-29,-28)
    メインスレッドで動かしてない?
    Silverlightでは、メインスレッドを止めて同期ダウンロードしようとするとデッドロックする
    880 : 866 - 2010/10/11(月) 22:52:24 (+3,-30,-112)
    >>878-879
    サンプルで紹介したソースですが、
    メインスレッドからBackgroundWorkerを使用して別スレッド実行となっています。
    また別スレッド処理が完了した後、RunWorkerCompleted内でSetが行われています。

    WaitOneをコメントアウトした場合(非同期)、RunWorkerCompleted処理が行われました。
    WaitOneを行う場合、RunWorkerCompleted処理まで到達していないようです。
    881 : デフォルトの名無 - 2010/10/11(月) 22:53:29 (-1,-29,-8)
    スレッド使わなくてもOpenReadAsyncとOpenReadCompletedでいいじゃん
    882 : デフォルトの名無 - 2010/10/11(月) 23:00:47 (+3,-30,-173)
    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();
    こんな感じでいけたはず
    883 : デフォルトの名無 - 2010/10/12(火) 01:17:51 (-1,-29,-9)
    879はUIスレッドで WaitOne呼んじゃ駄目って話だろ?
    884 : デフォルトの名無 - 2010/10/12(火) 01:27:47 (+57,+29,-9)
    まぁそういうことだな メインスレッドっていう表現で惑わされる
    885 : 866 - 2010/10/12(火) 02:30:34 (+47,-21,-53)
    なんというか、無理な気がしてきました・・・
    http://d.hatena.ne.jp/n7shi/20090731/1248967824
    ここのサンプルも試してみましたが、実行すると
    「UIスレッドでのみ実行できます」
    とのエラーでした。

    WaitOneを使うためには、確かにみなさん仰るとおり、UIと別スレッドからの実行が必要。
    WebRequest、WebClientを使うためにはUIスレッドからの呼び出しが必要。

    実行条件が矛盾してしまっているんですよね…。
    もうすこし考えてみます。
    886 : デフォルトの名無 - 2010/10/12(火) 02:54:19 (+60,+22,-6)
    手元で>>885のサンプルを試したけど、ちゃんと動くが?
    887 : 866 - 2010/10/12(火) 03:46:47 (+7,-28,-11)
    >>886
    すみません、885のサンプル動きました。URI指定でミスってたのが原因でした。
    明日改めて整理して試してみます。
    888 : デフォルトの名無 - 2010/10/12(火) 05:19:46 (+17,-29,-44)
    >>866 UIスレッドで終了を待つ同期通信は無理だよ。
    SilverlightはUIスレッドをブロックすると、ブラウザごと固まってしまうしね。


    ちなみにこんな場合の処理方法の1つとしてBusyIndicatorってのがある。
    まぁ似たようなことを自前でやった方が楽かもしれんが。
    http://www.silverlight.net/content/samples/sl4/toolkitcontrolsamples/run/default.html
    889 : 866 - 2010/10/12(火) 11:36:27 (+9,-30,-307)
    結論ですが、あきらめました。

    下記ソースは>>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;
    }
    890 : デフォルトの名無 - 2010/10/12(火) 12:39:34 (-1,-29,-24)
    UIスレッド上で同期ダウンロードなんかWinFormsでもありえないだろ
    ユーザーは普通それをフリーズと呼ぶ
    891 : デフォルトの名無 - 2010/10/12(火) 22:14:18 (+57,+29,-6)
    非同期コールバックのほうが便利だと思うけど、
    初心者にはわかりにくいのかね
    892 : デフォルトの名無 - 2010/10/12(火) 22:22:36 (+52,+29,+0)
    イベントドリブンです
    893 : デフォルトの名無 - 2010/10/12(火) 22:28:59 (+1,-26,-15)
    なんでもイベントなのは実際不便でしょ
    だからReactive Extensionsなんてものが出てくる
    894 : デフォルトの名無 - 2010/10/12(火) 22:44:28 (+62,+29,-30)
    処理が重くならないのなら同期の方が記述も単純で楽だわ。
    その間UIが固まるのも、ある意味アトミックで扱いやすいだろう。

    まぁクロージャで楽ができるし、BusyIndicatorみたいなやり方でどうとでもなるから、
    困ってはいないけど。
    895 : デフォルトの名無 - 2010/10/12(火) 22:46:27 (+57,+29,-51)
    フリーズせずにちゃんと無効にしてくれる同期メソッドがあればいいのに。
    「応答なし」はさすがにいかん
    896 : デフォルトの名無 - 2010/10/12(火) 23:23:44 (+57,+29,-17)
    同期なんて誰も使わないと思って実装してないんだろうな
    897 : デフォルトの名無 - 2010/10/12(火) 23:47:25 (-1,-29,-8)
    httpで同期なんて、初代NetscapeみたいにUIが固まって使いづらいぞ。
    898 : デフォルトの名無 - 2010/10/13(水) 00:33:41 (+57,+29,-11)
    非同期使うにしても、コードが見渡しやすいようラップして同期に近いコードになるようにするよね。普通は。
    899 : デフォルトの名無 - 2010/10/13(水) 00:59:52 (-1,-29,-40)
    それでも、匿名メソッド/ラムダ式あれば十分じゃない?

    欲を言えば Reactive Extensions が早く標準になって欲しいけど。
    900 : デフォルトの名無 - 2010/10/13(水) 08:33:28 (+56,+28,-8)
    非同期で完了したら次の処理を行えば同期になるだろ
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / silverlight スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - wcfRIAXAP + - デバッグ用のリソース文字列 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について