[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 07/07 07:23 / Filesize : 230 KB / Number-of Response : 861
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC♯(Part5)



1 名前:デフォルトの名無しさん [03/10/04 01:02]
このスレッドは

「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。

ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。

少しずつC#プログラマを名乗るものが現れました。みなさん一緒に勉強しましょう。

前スレッドはこちら
pc2.2ch.net/test/read.cgi/tech/1059028988/l50 (Part4)
pc2.2ch.net/test/read.cgi/tech/1047210828/l50 (Part3)
pc2.2ch.net/test/read.cgi/tech/1035895873/l50 (Part2)
pc2.2ch.net/test/read.cgi/tech/1023766485/l50

654 名前:デフォルトの名無しさん mailto:sage [04/11/30 00:09:17]
C#を学習する練習とおもい、メモ帳もどき+αを作成して
完成したのですが、巨大なファイルの表示に時間が
掛かります。
 秀丸エディタさんとまではいかないでも、少しは
早く表示できるようにするには、どうすればよいのでしょうか。
 textBoxを1から自分で作成し直すにしても、その考え方の
ヒントだけでも教えてください。

655 名前:デフォルトの名無しさん mailto:sage [04/11/30 00:21:03]
VirtualModeみたいなもんか

656 名前:デフォルトの名無しさん mailto:sage [04/11/30 01:04:22]
C#の学習のためなら、もっと他にやることあるんじゃないのか…

と思ったら負けですか?

657 名前:654 mailto:sage [04/11/30 01:18:21]
>>656
元々勝ち負けのない趣味のプログラムなのですが、
他にといわれても。文法から始めろと?
>>655
VirtualMode?を調べてみます。
ありがとうございます。

658 名前:デフォルトの名無しさん mailto:sage [04/12/03 06:51:53]
>>654
ReadLineで処理してるんじゃない?
だったら、ReadToEndで読んでみては?

FileStream fs = new FileStream("ファイルのパス",FileMode.Open);
StreamReader sr = new StreamReader(fs);
textBox1.Text = sr.ReadToEnd();

ところでVC#.Net2005っていつ発売なの?
はやく.Net Freamwork2.0を使ってみたい・・・

659 名前:デフォルトの名無しさん mailto:sage [04/12/03 14:21:06]
>>658
早くて来夏だろうねぇ。
環境があるなら、β1を試してみたら?
十分に正式版に向けて準備ができると思うけど。
それに、今ならAvalonのPreviewも出てて、楽しいと思うし。

660 名前:デフォルトの名無しさん mailto:sage [04/12/04 10:53:23]
Avalon previewは現状MSDN会員のみだよね?

661 名前:デフォルトの名無しさん mailto:sage [04/12/04 19:44:57]
フォームの最小化ボタンを押した時みたいに
this.Hide();
this.ShowInTaskbar = true;
と言う状態にしたいのですが何か方法があるのでしょうか?

662 名前:デフォルトの名無しさん mailto:sage [04/12/04 19:48:40]
>>661
それで良いんじゃないのか?



663 名前:661 mailto:sage [04/12/04 20:09:22]
>>662
いや、やってみたら分かるけど
this.Hide();
とすると
this.ShowInTaskbarを弄っても反映されないみたい
Locationをどっか遠くに設定するしかないのかな?

664 名前:デフォルトの名無しさん mailto:sage [04/12/04 20:19:57]
this.WindowState = FormWindowState.Minimized;
じゃいかんの?

665 名前:661 mailto:sage [04/12/04 20:41:29]
>>664
レスありがとうございます。
それでイケました。

666 名前:デフォルトの名無しさん mailto:sage [04/12/05 12:08:19]
C#でC++でいうマクロのようなものってあるんでしょうか?
マクロとテンプレート使ってトリッキーなことしてたのでそれをC#で実現する方法がわからなくて困ってます。

667 名前:デフォルトの名無しさん mailto:sage [04/12/05 12:11:48]
トリッキーな事はやらない方向にと言うのが言語の潮流。

668 名前:デフォルトの名無しさん mailto:sage [04/12/05 12:27:53]
そんな正論言ってもしゃーないやん

669 名前:デフォルトの名無しさん mailto:sage [04/12/05 23:03:06]
たぶん、むりぽ。次期バージョンでテンプレートはいるらしいけど。

670 名前:デフォルトの名無しさん mailto:sage [04/12/05 23:25:12]
テンプレートはかなり期待。

671 名前:デフォルトの名無しさん mailto:sage [04/12/05 23:31:20]
C++みたいなのだったらやだな。
へたに型とかみなくていいから、単にテンプレート変数を
自分の書いた文字で置き換わってコンパイルされるだけでいい。
そっちのがいろいろ使い道ある。

672 名前:デフォルトの名無しさん mailto:sage [04/12/05 23:37:01]
>>671
単純置換は止めてくれ。C++ の如くアセンブリが肥大化する。



673 名前:デフォルトの名無しさん mailto:sage [04/12/06 00:02:58]
>>671
むしろC++見たいなので、単純置換でないものがいいな、
もし型の置き換えだけであれば、テンプレートよりもメタクラスの実装の方が何倍も綺麗でいいと思うし。
てか、なんでメタクラスは実装されないんだろう……シクシクシク

674 名前:デフォルトの名無しさん mailto:sage [04/12/06 00:04:53]
>>673
メタクラスはクラスのクラスだっけか
smalltalk やった事無いから分からん

675 名前:デフォルトの名無しさん mailto:sage [04/12/06 00:08:25]
>>674
とどのつまり型を入れることのできる変数。
Metaclass a = int ;
a b ;

int b ;

たとえばこんな感じ
void Func( Metaclass T , int hoge , ... )
{
}

template 全くいらない

676 名前:デフォルトの名無しさん mailto:sage [04/12/06 00:08:28]
>>673リフレクションじゃだめなのか?

677 名前:デフォルトの名無しさん mailto:sage [04/12/06 00:15:04]
>>675
Type

678 名前:デフォルトの名無しさん mailto:sage [04/12/06 00:38:11]
>>677
それは何かが違う C++ でいえば typedef と type_info 型ぐらい違うな

679 名前:デフォルトの名無しさん mailto:sage [04/12/06 00:40:21]
もう型なんてなくていいよ

680 名前:デフォルトの名無しさん mailto:sage [04/12/06 00:44:47]
スクリプト言語で型無しではまったことないの?

681 名前:デフォルトの名無しさん mailto:sage [04/12/06 01:22:42]
C#(というか.NET)でLuaを使っているサンプルはどこかにないでしょうか。
当方で探しても見つかりませんでした。

682 名前:デフォルトの名無しさん mailto:sage [04/12/06 01:36:42]
>>681
それはこれのこと?
ttp://bandodalua.lua.inf.puc-rio.br/luanet/



683 名前:デフォルトの名無しさん mailto:sage [04/12/06 02:09:29]
ttp://www.codeproject.com/managedcpp/luanetwrapper.asp

> So what about executing Lua script in .NET applications?
> This should not be a major problem, just the matter of writing a managed C++ wrapper.

684 名前:デフォルトの名無しさん mailto:sage [04/12/07 03:49:48]
かなり基本な質問です、C/C++で書かれたライブラリ
(.NETとか関係なけりゃクラスすらないような)を、C#で
使用する方法は無いのでしょうか

なんとなくムリかなとは思うのですが、あまりに基本な
ためかどこのFAQを読んでもハッキリした答えがなくて
モヤモヤしてます。C/C++で作られた資産を移植しようと
すると、やはり手作業が入るものでしょうか
ズバッと斬ってやって下さい orz

685 名前:デフォルトの名無しさん mailto:sage [04/12/07 04:11:39]
P/Invokeという手法で使用できる。
例えばWin32API呼出もC用ライブラリの呼出と考えられる。
関数のエントリポイント、値渡し参照渡し、相互の型の対応などを考える必要はあるが、基本はこんな感じ。

[System.Runtime.Interopservices.DllImport("user32.dll")]
public static extern uint SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

詳しくはヘルプを見るべし。
ms-help://MS.VSCC/MS.MSDNVS.1041/cpguide/html/cpconconsumingunmanageddllfunctions.htm

686 名前:デフォルトの名無しさん mailto:sage [04/12/07 06:09:08]
>>684
DLLなら>>685の言うようにP/Invokeで利用可能。
そうでないなら、COMやDLLにするかManaged C++でラッパを書いて利用する。

漏れはP/InvokeメンドクサイのでCOMコンポーネント経由でやったりするのが好きなんだけど、
Windows XP以外ではインストーラが必須になるので嫌う向きもあるみたい。

687 名前:デフォルトの名無しさん mailto:sage [04/12/07 16:32:28]
>>675
おおーすげー便利そう・・・
C#2.0に欲しいなぁ

メタクラスで指定した型の戻り値が欲しい時はどうするの?
object Fanc( Metaclass T, int hoge, ...)
{
}
ならちとイヤーな感じw

688 名前:デフォルトの名無しさん mailto:sage [04/12/07 17:48:59]
>>675
リフレクションのシンタックスシュガーか・・
どんなときに便利なの?

689 名前:デフォルトの名無しさん mailto:sage [04/12/07 18:08:09]
>>675
それって実行時にすっ飛ぶんだよね
えらーしょりしにくくね?

690 名前:デフォルトの名無しさん mailto:sage [04/12/07 20:24:52]
>>675
C#の設計思想と全然合わないな。異物を混ぜるなって感じ。

691 名前:デフォルトの名無しさん mailto:sage [04/12/07 22:09:54]
>>675
悪くはないと思うけど、T 型を返すときはどうすんの?

692 名前:デフォルトの名無しさん mailto:sage [04/12/07 22:27:30]
>>685さん >>686さん ありがとうございます。

てっきりC++のコードが使えないと思ってたので
助かりました。安心してC#を勉強できそうです。
さっそくDLL作成のほうに手をつけてみます。



693 名前:デフォルトの名無しさん mailto:sage [04/12/07 22:31:38]
>>688
Type で reflection って面倒だから、シンタックスシュガーには意味あるんじゃない?
でもテンプレートの代わりにはならないような気が・・・

template <class T> T Max(T a, T b) なんてのから、型推論で T を導出してくれて
こそのテンプレートだし。若干 C++ マンセー入っちゃってるけど。


694 名前:デフォルトの名無しさん mailto:sage [04/12/07 22:33:24]
先に予想してみるテスト。

>>692
ポインタもWindowsのハンドルもIntPtr型だ。

695 名前:デフォルトの名無しさん mailto:sage [04/12/07 22:35:21]
漏れも

>>692
コールバックも書けるから安心してください(MSDN参照)。

696 名前:デフォルトの名無しさん mailto:sage [04/12/07 23:25:40]
>>693,688
シンタックスシュガーではないと思われ

697 名前:デフォルトの名無しさん mailto:sage [04/12/07 23:42:59]
>>691
boostとか見てると良く分かるけれど、戻り値が型推というのはバクダンになりやすいので、使わないというのは有りかと思います。
この形式ではやるとしたら構造体かなにかで型と実体のペアを作って返すしかないですね。

>>690
C#の設計思想など知りませんが、少なくともよりオブジェクト指向的ではあろうかと……

698 名前:デフォルトの名無しさん mailto:sage [04/12/08 12:56:45]
>>696
いや、シンタックスシュガーだと思うよ。だって、
・変数宣言ができる
・メソッド等のInvokeが普通の書き方でできる
っていう、純粋に記法の追加でしかないし。
即値を渡せばコンパイル時に型を決定して最適化はできるだろうけど・・
関係ないけど全然Metaclassじゃなくて単にClassだよね。

>>697
型推論はともかく、T Max(T a, T b) 程度が書けないのでは記述能力不足・・・

699 名前:デフォルトの名無しさん mailto:sage [04/12/08 14:48:20]
>>698
リフレクションをシンタックスシュガーということにしてしまうと、全てがシンタックスシュガーになってしまわないか?
それは何か違う気がするんだが・・・

700 名前:デフォルトの名無しさん mailto:sage [04/12/08 15:15:09]
>>699
リフレクションをシンタックスシュガーだと言っているのではなく、
>>675の「Metaclass」なるものは単なるリフレクションのシンタックスシュガーに過ぎない
と言ってるだけ。

Type T; があったとき、 T a = new T() なんて書けるとリフレクション使うときには便利、
それには同意する。

701 名前:デフォルトの名無しさん mailto:sage [04/12/08 15:23:24]
そうなのかな、どうにもこうにも拡大解釈としか捕らえられないのだが・・・

702 名前:デフォルトの名無しさん mailto:sage [04/12/08 15:29:41]
だって漏れは「リフレクションをシンタックスシュガーだということに・・・」って主張してないじゃん。
だから一体何をどう捕らえられているのかサッパリわかんない。
ケチらないでもう少し言いたいことを書いてよ。



703 名前:デフォルトの名無しさん mailto:sage [04/12/08 15:37:49]
>>702
ちょっと勘違いがあるかも、リフレクション機能を対象にしたシンタックスシュガーってのは変だと思うわけ。
リフレクションは基本的にこれがありとなると、もはや何でもありになってしまう。
何でもありな物をシンタックスシュガーだと主張するなら言語機能の全てがシンタックスシュガーということになってしまうが、
これは常識的なシンタックスシュガーの概念とは違うと思う。
シンタックスシュガーは元々定義があいまいなので、主観で貴方がそう思うというならそういう事としかいいようがないと思います。

704 名前:デフォルトの名無しさん mailto:sage [04/12/08 16:00:03]
>>703
よくわかった。漏れが>>715をシンタックスシュガーだと思ったのは、現行のTypeとの違いが
局所的な記法の違いだけだってとこから。
主観だけど構文が違うだけで機能が同じなら、それはやはりシンタックスシュガーだと思う。

C++のテンプレートが型推論機構のおかげで普通のチューリングマシンとしての機能を完備していて、
単なるマクロの便利な記法を脱却しているのと比べてしまうからそう思うのかもしれないけど。

705 名前:デフォルトの名無しさん mailto:sage [04/12/08 21:21:52]
ていうかシンタックスシュガーって何ですか。

706 名前:デフォルトの名無しさん mailto:sage [04/12/08 21:24:53]
>>705
分からないときにはとりあえずぐぐって下さいな
www.google.com/search?num=50&hl=ja&lr=lang_ja&safe=off&ie=SJIS&oe=SJIS&q=%82%C4%82%A2%82%A4%82%A9%83V%83%93%83%5E%83b%83N%83X%83V%83%85%83K%81%5B%82%C1%82%C4%89%BD%82%C5%82%B7%82%A9%81B

707 名前:デフォルトの名無しさん mailto:sage [04/12/08 21:27:26]
シンタックスシュガーがあるのなら、シンタックスソルトとか、
シンタックスペッパーもあるのですか?

708 名前:デフォルトの名無しさん mailto:sage [04/12/08 21:35:24]
>>706
ぐぐった可能性を微塵も考慮しないあたりがステキ。

>>707
正露丸糖衣があるなら正露丸塩衣もあるのですか?

709 名前:デフォルトの名無しさん mailto:sage [04/12/08 22:04:50]
ていうか正露丸糖衣って何ですか。

710 名前:デフォルトの名無しさん mailto:sage [04/12/08 22:32:07]
>>709
C#に対するIDEみたいなもの。

711 名前:692 mailto:sage [04/12/09 00:02:44]
>>692 >>695
ありがとうございます(T−T
間違いなくつっかえると思われます¢(。。;)

なお勉強はぼつぼつ進行しつつあり、予言の的中は
15日以降にスケジュールされております。

712 名前:681 mailto:sage [04/12/09 19:00:32]
>>682
亀レス失礼。
どうもありがとうございます。



713 名前:デフォルトの名無しさん [04/12/14 10:55:08]
教えてください。
 C#でボタンをクリックすると指定したpdfファイルを印刷するような
プログラムを作成することはできますか?
 どうすればいいでしょうか?なにかヒントをお教えください。

714 名前:デフォルトの名無しさん mailto:sage [04/12/14 12:12:27]
君はどのくらいプログラミングが出来るのか、なにかヒントをお教えください。

715 名前:デフォルトの名無しさん mailto:sage [04/12/14 12:13:50]
・Process.Start
・"C:\Program Files\Adobe\Acrobat 6.0\Reader\AcroRd32.exe" /p /h "%1"

716 名前:713 [04/12/14 12:43:25]
>715
ありがとうございました。
おかげで印刷することができました。
複数枚を、印刷したい時や、ページを指定して印刷するときは
どのようにすればいいでしょうか?よろしくおねがいします。


717 名前:デフォルトの名無しさん [04/12/14 12:56:01]
・・・少しは自分で考えろ

718 名前:デフォルトの名無しさん mailto:sage [04/12/14 17:45:54]
>>716
馬鹿ハケーン

719 名前:デフォルトの名無しさん mailto:sage [04/12/15 17:27:53]
ファイルをゴミ箱に送るにはどうすればいいのでしょうか

720 名前:デフォルトの名無しさん mailto:sage [04/12/15 17:33:12]
>>719
ttp://www.google.com/search?num=100&hl=ja&lr=lang_ja&oe=utf8&q=C%23+%E3%81%94%E3%81%BF%E7%AE%B1

721 名前:719 mailto:sage [04/12/15 18:27:09]
スミマセンデシタ orz

722 名前:デフォルトの名無しさん [04/12/17 18:46:13]
そのスレッドの参照を誰も持ってない場合に
実行中のスレッドが勝手にGCされちゃうことってあるの?

void Start()
{
 Thread thread = new Thread(new ThreadStart(new MyThread()));
 thread.Run(); // 作りっぱなし
}



723 名前:デフォルトの名無しさん mailto:sage [04/12/17 19:48:34]
>>722
ないから安心したまい。
実行環境が内部でスレッドを管理するので、参照は実は存在するから。
スレッドが行うメソッドが終了したらGCの対象になる。

細かい話だが、StartされないThreadオブジェクトは参照が無くなればGCの対象だが、
WeakReferenceでのみ参照を持っている状態でもGCの対象にならなくなるようだ。

724 名前:デフォルトの名無しさん mailto:sage [04/12/17 20:04:33]
しかしMutexが勝手にGCされてアプリの多重起動防止が効かなくなるということはあるらしいぞ
そのためGC対象から外すよう明示的に指示してやるのが良いそうだ
GC.KeepAlive(mutex);
ってな感じで

725 名前:デフォルトの名無しさん mailto:sage [04/12/17 21:07:34]
>>724
それはひょっとしたらSocketがListenした時にMutexが解放されてしまうと言うバグかな。
そうだとしたらGC.KeepAliveも無意味だよ。
そもそもGCの問題じゃないし。

.NET1.0はSP3では解決されてる。.NET2.0(のベータ)は初めから問題なし。
.NET1.1ではSP1でも未解決な、ちょっと頭の痛い問題だ。
TCPチャネルを使ったリモーティングですら解放されてしまうし。

726 名前:デフォルトの名無しさん mailto:sage [04/12/17 21:19:05]
そういえばInsider.NETの会議室にもう一つMutex絡みの話が出てた。
スレッドが終了する時に自動的にそのスレッドが所有するMutexを解放するって話。

727 名前:デフォルトの名無しさん [04/12/17 22:03:08]
フレームワークのクラスってたくさんあるじゃん。しかも意味不明。

728 名前:デフォルトの名無しさん mailto:sage [04/12/17 22:09:16]
誤爆乙

729 名前:デフォルトの名無しさん mailto:sage [04/12/17 22:12:23]
>>725
dobon.net/vb/dotnet/process/checkprevinstance.html
> ローカル変数として宣言したMutexを使った場合、うまく行かないことがあるようです(これに従い、
> ここで紹介しているサンプルも修正しました)。静的フィールドを使えば解決されますが、それ以外
> では、GC.KeepAliveメソッドを使用すれば解決できるようです。エントリポイントで二重起動を
> チェックする例を次に示します

730 名前:デフォルトの名無しさん mailto:sage [04/12/17 22:23:27]
あ、静的変数にしたら問題なくなった。

でもローカル変数のMutexをGC.KeepAliveしてもやっぱりSocketがListenすると解放される……。

731 名前:デフォルトの名無しさん mailto:sage [04/12/23 09:39:14]
Htmlをテキストとそのままと表示して、置換を使った簡単なエディタを作りたいなと思うのですが
WindowsアプリでローカルにあるHtmlファイルを表示することって出来るのでしょうか?

732 名前:デフォルトの名無しさん mailto:sage [04/12/23 10:06:14]
うぇぶくらいあんとつかえばいいのでは?



733 名前:デフォルトの名無しさん mailto:sage [04/12/23 10:32:27]
WebBrowserコンポーネントを使えばいいのでは?

734 名前:731 mailto:sage [04/12/23 13:01:13]
レス有り難うございます。
キーワードを元に検索して参考になりそうなHPを見つけました。
これから頑張って作ってみます。

735 名前:デフォルトの名無しさん mailto:sage [04/12/29 23:55:43]
次期OSでの商用パッケージアプリってC#で開発されるのかな?

736 名前:デフォルトの名無しさん mailto:sage [04/12/30 12:29:00]
VisualStudioとか

737 名前:デフォルトの名無しさん mailto:sage [05/01/03 00:26:06]
つぎのofficeがC#ってのを聞いたことがある。
office2005の入ってる人は.netも入っていて
C#アプリも配布できるのだと。

738 名前:デフォルトの名無しさん mailto:sage [05/01/03 14:29:40]
Office2003も.NETでプラグインを作れたような。
…って、C#とは限らないか。

739 名前:デフォルトの名無しさん mailto:sage独り言 [05/01/03 17:56:34]
同一アプリケーションドメイン上に、同じキーを持つオブジェクトが1つしかない事を保証したい
singleton を変形し、同じキーで作成しようとしたら、以前作成したオブジェクトを返す
ただし、そのオブジェクトは GC に回収されるようにしたい

WeakReference を Hashtable 内に押し込むのが正解?
WeakReferenceTable オブジェクトとかって無いの?

740 名前:デフォルトの名無しさん mailto:sage [05/01/05 00:59:40]
C#でRemotingを使いたいのですが、MSDNやGDN以外で参考になるサイトはありますか?
ぐぐったのですが、ほとんど見あたりません・・・

741 名前:デフォルトの名無しさん mailto:sage [05/01/05 01:09:35]
>>740
慣れればそう複雑でも無い事が分かるから(奥は深そうだけど)、取りあえず自分で実際に試す事だね。
ttp://d.hatena.ne.jp/N0MURA/20040108
VB.NETだけど、こことか。

742 名前:デフォルトの名無しさん mailto:sage [05/01/05 01:15:19]
>>741
ありがとうございます、試してきます〜



743 名前:デフォルトの名無しさん mailto:sage [05/01/05 02:07:36]
>>740
本は丸ごと一冊リモーティングの本があったよね
お試しとかでなく実用として遣うなら買うことお勧め。時間の短縮分で元が取れると思う。

744 名前:デフォルトの名無しさん mailto:sage [05/01/06 00:52:02]
かなり頭が悪いのですが、よろしくお願いします。
以下のようなメソッドがあると仮定します。

メソッド {
if (略) {
bool a
result1 = true;
}

if (略) {
bool result2;
result2 = true;
}

if (result1 == true || result2 == true) {
(終了);
}

}

result1 とresult2 がtrueになったときに
一番下の(終了)という部分を実行したいのですが、
ビルドをすると「未割り当てのローカル変数が参照されました。」と
表示されエラーになってしまいますが、何が原因なのでしょうか。
よろしくおねがいします。

745 名前:デフォルトの名無しさん mailto:sage [05/01/06 00:52:18]
変数のスコープ wisdom.sakura.ne.jp/programming/cs/cs23.html

746 名前:デフォルトの名無しさん mailto:sage [05/01/10 19:53:24]
C♯ソースコードのステップ数とかを評価してくれるソフトってない?
C++とかのは見かけるんだけど

747 名前:デフォルトの名無しさん mailto:sage [05/01/10 21:05:30]
>>746
ドットネットのすてっぷカウント♪
ttp://www.vector.co.jp/soft/win95/prog/se327186.html
とかどうだろう。

748 名前:yuuteen [05/01/11 18:04:49]
こんにちわ。
初めて書き込ませて頂きます。
C#のSystem.Diagnostics.Process.GetProcessesプロシージャが
Windows2000では失敗すると、下記のサイトにあるのですが、

support.microsoft.com/kb/823642/ja#kb3

何故、なのでしょうか?
それと、どうやったら、失敗しないのでしょうか?

誰か、助けて!!



749 名前:デフォルトの名無しさん mailto:sage [05/01/11 19:58:00]
>>748

パフォーマンスカウンタに関する問題が原因だったような。
書いてあるように HotFix を入手するか、違う方法を考えればよし。

特に、二重起動防止をやりたいのなら、これじゃなくて、Mutex を
使うほうがいいよ。

750 名前:746 mailto:sage [05/01/12 01:22:28]
>>747
ズバリでした
探しそびれていたようで。
痛み入りますorz

751 名前:yuuteen [05/01/12 12:27:20]
>>749
ありがとうございます。
確かにおっしゃる通りで、HotFixを入手する手も考えたのですが
そもそも、根本的に二重起動チェックの方法が悪いのではというところで 悩んでいました。
ちなみに、バッチの二重起動チェックなのですが...。
下記がMutexを使用した場合のソースなのですが こんな感じなのでしょうか?
また、"MyName"は他の文字列と置換え可能だと、サンプルを見る限り
書いてあったのですが、バッチの二重起動チェックの場合、何をここに
記述しなくてはいけないのですか?
二重起動チェック処理は共通関数化して行う予定です。 ご教授下さい。
///////////////////////////////////////////////////////////////////////////
bool exit = false;
System.Threading.Mutex m = new System.Threading.Mutex(false, "MyName");

if (m.WaitOne(0, false) == false)
{
//すでに起動していると判断する
m.close();
exit = true;
}
else
{
exit = flse;
}
//アプリケーションが終わるまでmへの参照を維持するようにする
GC.KeepAlive(m);
}
///////////////////////////////////////////////////////////////////////////


752 名前:デフォルトの名無しさん mailto:sage [05/01/12 13:03:14]
>//アプリケーションが終わるまでmへの参照を維持するようにする
>GC.KeepAlive(m);
GC.KeepAliveはそういう仕様ではありません。

こんなクラスを使えば良いでしょう。

class Hoge {
 System.Threading.Mutex _m;
 boole _is_ok;
 public Hoge(string id)
 {
  _m = new System.Threading.Mutex(false, id);
  _is_ok = _m.WaitOne(0, false);
 }
 public ~Hoge()
 {
  _m.Close();
 }
 public bool IsOK { get { return _is_ok; } }
}

使い方
class YourApp {
 Hoge _hoge = new Hoge("YourAppName"); // メンバ変数等、アプリが終了するまで残る変数に入れること。
 public void Main()
 {
  if ( !_hoge.IsOK ) return;
  ...
 }
}



753 名前:デフォルトの名無しさん mailto:sage [05/01/12 16:11:06]
>>751
よく動いてる仕組みもわからず使う気になりますね
全部を詳細に把握しろとは言いませんが。

754 名前:デフォルトの名無しさん [05/01/12 22:20:38]
コマンドラインコンパイルの方法教えてください。
javac 〜.javaみたく扱いたいんで。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<230KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef