- - PR -
処理と処理の間にタイムラグを作りたい場合
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-03-15 14:32
教えて下さい。 C# ASP.NET WEBフォーム環境にて。 「バックアップを実行中」の様な場合の「→→→→→」左記のように「→」が 一個ずつ表示されて行くような処理をしたいのです。 任意のタイミングで「→」一個づつ「ヴィジブル トゥルー」にして実現したいのですが、 「タイムラグ」を発生させる方法が知りたいのです、お願いします。 | ||||
|
投稿日時: 2004-03-15 15:24
「バックアップ」の進行状況と食い違ってもかまわないなら、JavaScriptで実装できます。
http://tohoho.wakusei.ne.jp/html/blink.htm ↑このページの一番下のサンプル参照 一致させるなら、下の「www」というリンクから、私のウェブページにサンプルというか、考え方を書いていますので、参考にしてください。 | ||||
|
投稿日時: 2004-03-15 16:59
進行状況と同期させるのであれば、
Response.Write, Response.Flush あたりで、 htmlをゴリゴリ書き出していくのが常套手段と思います。 | ||||
|
投稿日時: 2004-03-15 17:11
なるほど。。。私はてっきり、サーバ側の処理が終了しないと、クライアント側にResponseの内容が渡らないと思いこんでいました。 | ||||
|
投稿日時: 2004-03-15 17:35
えっと、こんな風に作ってみました。
10秒ごとに「Count ?」が、カウントアップすることを期待したのですが、結果は6までためておかれた後一括表示し、7以降は10秒ごとに表示が追加されました。 最終結果のページのソースを確認すると、「Count 1…」は入っていませんでした。表示中は、すべての「<HTML>〜</HTML>」がつながっていました。 一度、サーバからの送信が終わりであることを示す必要があるのでしょうか?でも、そうすると「本当の終了」が受け取ってもらえないように思います。 | ||||
|
投稿日時: 2004-03-15 22:41
現在は一切の作り込みが行われて居らず、「不正確」なメッセージすら実現できて居ないので、ご教授頂いた通りに作らせて貰い、実現させて貰いたいと思います、ありがとうございます!またの機会もお願い致します。
| ||||
|
投稿日時: 2004-03-16 13:48
こんにちは。解決済みかもしれませんが蛇足で。
Response.Flushを利用すると、途中を表示するかどうかはブラウザの実装に依存すると思います。(途中まで返ってきた応答を出すかどうか。JPEGのインターレスと同じような感じ?) それと、Response.Flushは、とりあえず今のResponseの内容を送る、という意味なので、毎回ヘッダーからHTMLを送る必要はありません。 私もサンプルで試してみました。
とすると、私もJittaさんと同じで1から6までは一度で表示され、以降は連続して出ました。 出力をtableタグとしているのは、そうしないとIEが表示してくれなかったからです。(下のコメントアウトされているのだと最後の結果(10)でやっと出ます。実験で使ったIEはIE6SP1。)この辺りがブラウザの実装依存かと。 Response.End()すると終了してしまって、その後のページに遷移できないので、必要であれば上のようにJavaScriptで次ページへ遷移する処理を入れると良いと思います。 それと、原理上HTTPのZIP圧縮している場合は出ないと思いますし、あまりに処理が長いとブラウザがタイムアウトしてしまうかもしれません。(どちらも真偽は未検証です) | ||||
|
投稿日時: 2004-03-16 14:37
試してみました。IEの表示の仕様がそのようになっているようですね。
不思議なことに[更新]ボタンを押すと、期待通りの結果となります。 また、 str.Append(New String(" ", 512)) を追加し、末尾に余計なスペースを入れてやることで、お二人のコードともに動作いたしました。 情報元: http://groups.google.com/groups?hl=ja&lr=&ie=UTF-8&oe=UTF-8&selm=zGsD9.3339%24ID2.724476%40twister.southeast.rr.com |
1