CS-ScriptとF#メモ

0
close_yutori @kimukou2628

C#で指定時間(3分後)で終了とかってどう書けばいいんだろう? Stopwatch暮らす使うわけじゃないよね・・ 一応今 http://goo.gl/Od9wj のコードは見てる・・

2011-05-17 17:24:35
close_yutori @kimukou2628

うーん Stopwatch sw sw.Start() //途中で sw.Stop() sw.Elapsed で確認・・ が現実的かな?

2011-05-17 17:29:16
close_yutori @kimukou2628

普通のタイマーみたいに Sleep入れるわけにはいかないし・・ <処理しながら3分後に止めたいイメージだから

2011-05-17 17:29:39
かず(原材料に小麦粉を含む) @kazzna

別スレッドでチェックして割り込みですね RT @kimukou_26 普通のタイマーみたいに Sleep入れるわけにはいかないし・・ <処理しながら3分後に止めたいイメージだから

2011-05-17 17:51:00
close_yutori @kimukou2628

.@kazzna @JunichiIto77 有難うございます! そうかTimerクラスでグローバルフラグ立てて抜ければいいんすね。 今は何気にC#で便利ツール作成島にいるのでCS-Scriptでスクリプトベースで遣ってます~。VisualStudio立上げるメモリないので><

2011-05-17 17:56:01
close_yutori @kimukou2628

F#でCS-Script(http://www.csscript.net/ )みたいに出来る奴があれば 勉強がてら使うんだけどな・・(スクリプト実行、exeコンパイルも可能 引継ぎ時に厳しくなるから無理か<苦笑

2011-05-17 17:58:49
かず(原材料に小麦粉を含む) @kazzna

@kimukou_26 まて、グローバルは危険だ!避けられるなら避けるべきだ。言語にもよるがメインスレッドに終了以来を出すべきだ!

2011-05-17 18:00:44
Junichi Ito (伊藤淳一) @jnchito

@kimukou_26 @kazzna 細かい仕様はよく分かりませんが、「グローバルフラグ」に不吉な臭いを感じるので、イベントやコールバック、デリゲート等の言語機能を駆使した方がC#らしいコードになりそうな気がします。。。

2011-05-17 18:02:46
close_yutori @kimukou2628

@JunichiIto77 @kazzna まあ書き捨て系のコードですけど、ちゃんと書いた方がいいですよね~。 一見するとjavaでいうFuture.get みたいなの http://goo.gl/omgR1 見てもないような・・ もうちょっと探してみます

2011-05-17 18:09:57
Junichi Ito (伊藤淳一) @jnchito

@kimukou_26 @kazzna そういうコンテキストであれば、そのままいっちゃうのも手ですが、捨てるつもりで書いたコードが思いのほか長生きしちゃうというケースも良くありますし・・・w

2011-05-17 18:34:29
かず(原材料に小麦粉を含む) @kazzna

@JunichiIto77 @kimukou_26 一度書いたコードは一生メンテナンスされ続けると思っておかないとダメですよね。動いたら誰も捨てない。未来の自分も含めて。

2011-05-17 18:59:21
neuecc @neuecc

@kimukou_26 .NET4ならThread周りはTaskクラスを中心に見て回るといいかとー。task.WaitやCancellationTokenかも?

2011-05-17 19:04:48
close_yutori @kimukou2628

@neuecc 残念ながらせいぜい3.5です~。Win7標準だったりするので。でもコード実装自体は確認してみます Re:neuecc .NET4ならThread周りはTaskクラスを中心に見て回るといいかとー。task.WaitやCancellationTokenかも?

2011-05-17 19:49:18
neuecc @neuecc

@kimukou_26 あまり褒められた感じではないですが、new Threadでスレッド立ててJoinで指定時間待って、完了してないようならthreadをAbortとかも。

2011-05-17 19:59:24
close_yutori @kimukou2628

@neuecc 要件的に長い処理が合って、設定により三分で途中結果出力して終了させたいとかだから。でもシグナルファイル作ったら終了の方が現実的かも Re:neuecc new Threadでスレッド立ててJoinで指定時間待って完了してないようならthreadをAbortとかも

2011-05-17 20:38:56
neuecc @neuecc

@kimukou_26 適当なConsoleApplicationでアレですが http://bit.ly/lrcyqU

2011-05-17 20:56:42
伝説のK泉さん @nobuhisa_k

@kimukou_26 F#では.fsxというファイルにスクリプトを記述できます。このあたりが参考になると思います→ http://devadjust.exblog.jp/12700495/

2011-05-17 21:56:14
close_yutori @kimukou2628

@nobuhisa_k 有り難うございます。ただ.NETのバージョンがOSインストール時のままという制限ついていまして2.0~3.5辺りで制限つけて動かす事は可能なのでしょうか? RT F#では.fsxというファイルにスクリプト記述できます http://goo.gl/8ECl8

2011-05-17 22:21:12
伝説のK泉さん @nobuhisa_k

@kimukou_26 実行を担当するのはfsi.exeなので、F# CTPのfsiを使っているのなら自ずと2.0で動くと思います。

2011-05-17 22:27:05
close_yutori @kimukou2628

@nobuhisa_k おーっ!有り難うございます。凄い希望が見えてきました。CS-Scriptは4.0 縛りがあって凄く悩んでいましたので。。 RT 実行を担当するのはfsi.exeなので、F# CTPのfsiを使っているのなら自ずと2.0で動くと思います。

2011-05-17 22:28:34
close_yutori @kimukou2628

@neuecc あともう一つ質問なのですが、処理中にずっとログ書いていて、Ctrl+Cで強制終了した時にfinallyで終了時間をログ追記コード書いていたのですがログをアプリが掴んでしまって今一旨くない感じです。ブロックブロックで毎回開き直し追記イメージが正しいんでしょうか?

2011-05-17 23:05:14
Tadashi Shioi @shioi

久しぶりのおざきさんの記事だ~ RT @yoshioms Visual Basic 2010の新機能 - @IT http://t.co/bKQwazR 書きました。読みどころは、2ページ目にある、誕生日から円周率を求めるロジックと、4ページ目の「ぶんぶん」「ぱっぱ」です。

2011-05-17 23:08:36
neuecc @neuecc

@kimukou_26 Console.CancelKeyPress でCtrl+Cを検知出来るので、そこで(も)クリーンアップすればいいかもです。

2011-05-17 23:11:48
close_yutori @kimukou2628

@neuecc さっきのコードだと http://ideone.com/90WL9 isCanceledの位置に組込むイメージでしょうか? RT Console.CancelKeyPress でCtrl+Cを検知出来るので、そこで(も)クリーンアップすればいいかもです。

2011-05-17 23:16:26