- 1 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:15:52 ]
- (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
前スレ C#, C♯, C#相談室 Part51 pc12.2ch.net/test/read.cgi/tech/1233757615/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5くらい
- 205 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:25:22 ]
- >>201
上限件数は指定できます。ただ、最初の件数以降の次のデータを指定するのは 難しい状況です。ユニークで昇順なキーがないので。 データが多いからといって、途中で検索をやめてしまうのはだめです。 ただ、サーバがメモリ不足で落ちるのは駄目ですが、クライアントがメモリ不足 で落ちるのはまだ許容範囲です。
- 206 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:28:13 ]
- ダメです、とか、なんでえらそうなの?
- 207 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:30:37 ]
- >>204
ROW_NUMBER知りませんでした!!使えそうですね。ちょっとこれから調べてみます。 >>206 申し訳ないです。エラーで結果が出ないのはいいのですが、結果が正しくないの は一番やってはいけないことなので、あのような書き方になってしまいました。
- 208 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:31:17 ]
- >>205
TOP でも 3 回(だっけ?)組み合わせればここからここまでっての 一応できるんだよ。 まぁ天啓にあった某関数と同じ機能な ROW_NUMBER サポして くれたからこれでよくなったけど
- 209 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:58:26 ]
- カーソル付きのDBMSならHTTP鯖のセッション情報にカーソル情報書き込んでしまえばいいと思った
- 210 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 00:08:13 ]
- >>209
なるほど。
- 211 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 21:30:23 ]
- OLAPに対応してるのってMSSQL2008からだよね。
大丈夫かな?
- 212 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 22:49:05 ]
- 質問失礼します。
タスクトレイに格納した状態で再生できるサウンドAPIを探しています。 再生させる際、タスクトレイに格納された状態で、ボリューム調整を行いたいです。 始め、System.Media.SoundPlayerを利用したのですが、音量調整ができませんでした。 次に、Microsoft.DirectX.DirectSound.SecondaryBufferを利用したのですが、タスクトレイに入った状態では再生できませんでした。 上記には勘違いがあるかもしれません。 その点の指摘も含め、分かる方よろしくお願いします。 開発環境: VisualStudio2008 WindowsXP
- 213 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 22:56:04 ]
- なんで既にタスクトレイさんがわるものなのぉぉおwwww
- 214 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:03:29 ]
- SetCooperativeLevelが不適切なだけじゃね?
- 215 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:07:58 ]
- ありがとうございます。
協調レベルは真っ先に疑いました。 CooperativeLevel.Normal CooperativeLevel.Priority CooperativeLevel.WritePrimary 全部試しましたが、ダメでした。。。 フォームを表示すると鳴るんですけど、何故でしょうね。。。
- 216 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:14:06 ]
- SetCooperativeLevel(this, CooperativeLevel.Priority);
今このようなコードを書いています。 thisがいけないんですかね? 表示しているのはフォームではなく、NotifyIconですからそのownerを指定??? う〜む。やっぱり分からないです。。。
- 217 名前:212 215 216 mailto:sage [2009/04/15(水) 23:29:32 ]
- すいません。
自己解決しました。 BufferDescription の GlobalFocus を true にする事で鳴りました!
- 218 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:31:14 ]
- なーんか似た内容の人が居たらしい
hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200511/05110065.txt
- 219 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 16:45:54 ]
- 指定したアセンブリのプロセッサアーキテクチャを調べるにはどうすればいいでしょうか?
VS2008で参照を追加したとき.csprojに processorArchitecture=x86 などと書かれる情報のことです。 ildasmでマニフェストは見てみたのですが、それらしき情報は見つからなかったです。 よろしくお願いします。
- 220 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 05:03:44 ]
- プログラムでやるなら、Assembly.ReflectionOnlyLoadFromで読み込んでAssemblyName.ProcessorArchitectureで
- 221 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 20:13:06 ]
- なんかプロジェクトの規模が大きくなるにつれてIDEが激しく重くなるんですが
どうしようもないんでしょうか? といってもたかだか*.csファイル数126個、全45109行なんですが。 ユーザーコントロールも10個くらい作ってますが、それも関係してるのかな。
- 222 名前:デフォルトの名無しさん [2009/04/17(金) 21:33:29 ]
- exeとは異なる任意のフォルダにdllファイルを置きたいため以下のプログラムを書きました。
(WidgetLibrary.Widgetクラスは別プロジェクトでdllとして作成)これだとWidgetLibrary.Widgetの名前が解決できないのでビルド できません。ビルドできない原因は何でしょうか? namespace ConsoleApplication1 { public class Loader { static void Main(string[] args) { AppDomain.CurrentDomain.AssemblyResolve += FindAssm; Program.Go(); } static Assembly FindAssm(object sender, ResolveEventArgs args) { string simplename = new AssemblyName(args.Name).Name; string path = @"c:\sample\" + simplename + ".dll"; if (!File.Exists(path)) return null; return Assembly.LoadFrom(path); } } public class Program { public static void Go() { WidgetLibrary.Widget w = new WidgetLibrary.Widget(1, "a"); w.widgetDisplay(); } } }
- 223 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:41:29 ]
- 参照設定で追加していないのでメタデータを参照できないのが原因
と思う。
- 224 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:41:44 ]
- 自分で言っているように「WidgetLibrary.Widgetの名前が解決できないので」だろ。
- 225 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:45:01 ]
- >>222
任意のフォルダにDLLを配置するのが目的なら、GACに登録した上で参照設定するのが王道。 .NET Frameworkに含まれるDLLは、ローカルコピーしなくても参照できるだろ。 それは.NET FrameworkのDLLが特別扱いされているわけじゃなくて、それらが GACに登録されているから。 自作のDLLもGACに登録すれば同様に扱える。
- 226 名前:デフォルトの名無しさん [2009/04/17(金) 21:58:34 ]
- レスありがとうございます。
>>223 参照設定を追加するとプライベートアセンブリになってしまうので回避したいのです。 >>224 解決策でした。 >>225 GACに登録せずに任意のフォルダに置くことは不可能ということでしょうか?? このソースは C# 3.0 IN A NUTSHELL の558ページのコードを確認したくて 書いたものです。
- 227 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 22:20:42 ]
- あの本の綴じ込みはすごくいいね
洋書は製本がイマイチなのが多くて困る
- 228 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 22:28:17 ]
- 参照しているアセンブリのプロパティでローカルコピーをオフにすればよい
と思う。
- 229 名前:デフォルトの名無しさん [2009/04/17(金) 22:43:09 ]
- >>228
できました。 どうもありがとうございました。
- 230 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 23:57:22 ]
- GACって何のことか全く知らない俺が、ぐぐる前に適当に妄想してみる。
GACとは、Global Assembly Cacheの略で、システムワイドに.NETのアセンブリを 登録しておくキャッシュ。概念としてはUNIX系のOSでldconfigすると、システム ワイドに利用するダイナミックライブラリがld.soに登録されるのと似ている。
- 231 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 05:25:56 ]
- >>230
おまえgoogle先生だろw
- 232 名前:デフォルトの名無しさん [2009/04/18(土) 13:04:23 ]
- 1.1のContextMenuって、MenuItem.CloneMenuを使用して
状況に合わせたコンテキストメニューを作れみたいになっていたと 記憶してるんですが、 ContextMenuStripだと、ToolStripMenuItemにCloneMenuがないので、 これはどう解釈したらいいんでしょうか? デザイン時にパターンの数だけ作り付けのContextMenuStripを 用意しとくんですか?
- 233 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:48:31 ]
- Timerで回しているときにint(値型?)の配列が画面最小化すると消えてしまうのですが
残しておきたいです どうすればいいのでしょうか?
- 234 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:52:43 ]
- >>233
それだけで回答すると、 そりゃあんたの作り方次第としか言いようがない。
- 235 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 21:02:42 ]
- >>234
作り方が悪かったですorz OnActivatedを初めてFormが表示されるときにだけ呼ばれると勘違いしてました…
- 236 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 22:06:35 ]
- それなんてLoadイベント
- 237 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 22:51:48 ]
- 例えばZキーが押された状態でAを押してもOnKeyDownが発生しません。
これをZキーが押されている時にAが押されていることを知りたいのですがどうすればいいでしょうか?
- 238 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:06:29 ]
- e.Handled = true;でいけました
- 239 名前:デフォルトの名無しさん [2009/04/18(土) 23:12:15 ]
- 先日、C言語の勉強を始めた者です。まだまだ参考書の始めの方なのですが、エラーが起きてよくわからないことになってしまいました。
いまだにキーボードから数値を入力させて、それを表示する程度のものの自己流改変なのですが、なぜか二つ目を入力した後にエラーが起きて止まってしまいます。 それと、途中でプログラムの流れを止める方法がわからないので、それも出来れば教えていただけませんでしょうか? とりあえず理想としては、エンターを押してからもう一度押す迄 変数X + 1の答えを変数Xに代入し続けるようなプログラムが作りたいのです。 一応、ソースを書いておきます。 #include <stdio.h> int main(void) { int PS; float PS2; float PS3; printf("まずは整数を入力してください。"); scanf("%d",PS); printf("次は、小数を入力してください。"); scanf("%f",PS2); printf("最後にもう一度、小数を入力してください。"); scanf("%f",PS3); int end; printf("では、なにか数字を入力してエンターを押すと、結果が表示されます。"); scanf("%d",end);
- 240 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:13:35 ]
- >>239
すれ違い
- 241 名前:デフォルトの名無しさん [2009/04/18(土) 23:13:52 ]
-
printf("最初の整数は %d ですよね?",PS); ; printf("そして次は少数一回目は %f ですよね?",PS2); ; printf("そして最後は、 %f となっておりますよね?",PS3); ; int red; printf("最後に、面白いものを見せましょう。適当に数字を入れてエンターを押してください。"); scanf("%d",red); printf("exeファイルのダブルクリックをしていなければ、適当に入れてもらった数字を足した数を「%d」内に表示しておきます。では、さようなら。",end + red); return 0; } 最後のprintf()が終わっても自動的に閉じないようにするには、いったいどうすればいいのでしょう?
- 242 名前:239,241 [2009/04/18(土) 23:15:53 ]
- 申し訳ございません。
スレ名をチラっとしかみていませんでした。本当に申し訳ありません。
- 243 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:36:08 ]
- C#ってヘッダーファイルが無いのか。
変な言語だな。 C#って手続き型のプログラムができないのか。 不便な言語だな。 C#って関数に省略可能な引数を使えないのか。 代替手段としてオーバーロードしないといけないのか。 馬鹿げた言語だな。 C#ってswitch文でbreak無しで下に降りることができないのか。 気が狂ったような言語だな。 それと、0かそうでないかを評価できないのか。 初期化する前の不定値を参照するのはコンパイルエラーか。
- 244 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:46:36 ]
- 省略可能な引数は確かにほしいな。
他のは賛同しかねるが。
- 245 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:49:30 ]
- 省略可能な引数はC#4.0で追加される。
swichでのフォールスルーに関しては議論が分かれるとこだろう。 C#ではステートメントを含まない場合にのみ許可されている。 gotoステートメントによってラベル付きステートメントに直接移動する事もできるけど滅多に使われない。
- 246 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:58:26 ]
- >>239
初心者は恐ろしいことするよなぁ
- 247 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:00:32 ]
- セグメントエラーです。。。
- 248 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:37:30 ]
- C#はC言語の標準関数を使えないんだろ。
ぼろい言語だな。.Netでしか通用しないノウハウだな。 C++ならC言語のノウハウは生かせるから、VC++やC++Builderで、MFCやVCLの知識は無いけども、 イベントハンドラにC言語のコードを差し込んで、単にGUIの画面を借りるだけのスタイルで、 普段コマンドプロンプトのプログラムしか作らない俺でも、Windowsプログラムを作れたぞ。
- 249 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:49:14 ]
- 釣りたいならもっと勉強してから出直してきな
- 250 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:10:24 ]
- >>243 と >>248 は逆に、C/C++ への皮肉だと思う。
- 251 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:14:24 ]
- C#でC言語の標準関数を使った事がある俺は神か
- 252 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:14:35 ]
- ある意味釣られたってわけだなw
- 253 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:17:50 ]
- ああ、msvcrt*.dllの関数も呼べるよな
- 254 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:39:12 ]
- C++人はマネージ拡張C++に手を伸ばせば同じことができるし、
VB6人やMS-Office VBA人は差分学習ですぐにVB.netやれるし、 (中途半端に似ててかえって混乱するとかいうのはデマ) .Netしか通用しないノウハウのC#を学習する意味不明。
- 255 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:42:37 ]
- C互換ライブラリとかどこかにあったりしないかな。
C.StdIO.Printf() とか用意してある
- 256 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:42:57 ]
- 第二段来ました
- 257 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:07:22 ]
- >>254
ところがどっこい。 .NETのサンプルがC#だけで出て来る例というのがよくあるため、 VBの人もC++の人もC#のサンプルを見て自分の言語に移す羽目に。 ここから蛇足。一昔前だったら、Cで書かれたWinAPIのサンプルを VBへ移したり、C++ならクラスでラップしてみたりしていたわけで、 時代が移ってもやっていることに変わりはないのさ_| ̄|○
- 258 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:09:54 ]
- しっ、話しかけちゃいけません!
- 259 名前:デフォルトの名無しさん [2009/04/19(日) 02:10:41 ]
- >>254
じゃあdelphiしか選択肢がないな
- 260 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:14:42 ]
- kylixってどこいったん?
- 261 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 03:24:35 ]
- >>257
要は君はコピペグラマってこと? だったら.NETの問題っていうより君自身の問題なんじゃないの? 普通はサンプルの考え方を拝借することはあってもコードをそのまま引っ張る なんてしないよ。
- 262 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 03:47:00 ]
- そりゃそうだ。だいたい、C#に癖のある構文なんてそんなに無いから、
サンプルを理解するくらいなら特にC#の知識を持ち合わせていなくても問題ないだろう。 もっとも、VB.NETやC++/CLIからもうちょっと手を伸ばせばC#にも手が届くだろうとは思う。 手が届くというだけではC#を学習する理由にはならないから、254への答えでは無いけどな。
- 263 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 08:38:49 ]
- >>239が一瞬HLSLに見えた
- 264 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 08:53:42 ]
- あんな見え見えの構ってちゃんの相手してやるんなら>>239に答えてやればよかった
もういないだろうけどscanfの引数は取得したい値を格納する変数のポインタを入れなきゃだめだよん
- 265 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 10:09:38 ]
- 一章とかでscanf()してる入門書とかあるからなあ
- 266 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 10:47:06 ]
- いまだにCやるときはscanfを使う俺
なんで一行読み込みがgnuのgetlineしかねーんだよ・・・標準で作れよ メモリ確保こわい って感じ
- 267 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 18:12:40 ]
- fgets して sscanf するのが面倒だから
getopt に頑張ってもらうか適当な設定ファイル読ませるようにしちゃうなぁ。 つか C# 関係ないな。
- 268 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 02:23:31 ]
- たまに使うVC++でgetline()を使おうとして、「あれ?」と思う俺。
- 269 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:37:48 ]
- Collection系(例えばQueue)でロックされた状態で処理を行いたいとき
1.lock(独自のロックオブジェクト) 2.lock(対象.SyncRoot) 3.Queue.Synchronized(対象) とか考えられるんですが 使い分けの方法がわからない 1・・・コレクションだけではなくその他の変数やオブジェクトもロックしたいときにまとめて一回でやりたいから使うかなと 2、3 この違いは一体何なのか教えてほしいです。 そして Queue.Synchronized でMSDN調べたら 同期されている (スレッド セーフな) Queue ラッパーを返します とありますが、型が同じということだけはわかりますがこれはコピーされたオブジェクトなのかそれとも元の本体そのものなのか・・・ 予想すると 3のラッパーはオブジェクトのディープコピーをかえしてきて読み取り専用的に扱う 削除なんかは3の操作ではできないから1,2の方法を使って要素を削除したり こんな考え方でいいのでしょうか?
- 270 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:40:44 ]
- >>269
.Net Reflector
- 271 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 22:08:11 ]
- ソース公開されてるからReflector使わんでもええやん
- 272 名前:デフォルトの名無しさん [2009/04/21(火) 05:09:56 ]
- ReflectorとReflectionは違うものですか?
- 273 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 05:15:22 ]
- >>272
うん
- 274 名前:デフォルトの名無しさん [2009/04/21(火) 05:20:35 ]
- ツールか。新しい機能かとオモタ
- 275 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 08:45:40 ]
- >>269
どっちかっていうと1.2.が似てて、3.が違うよ 3はクラスメソッドがスレッドセーフになったコレクション。 Dequeue()やEnqueue()はスレッドセーフで実行できるけど、 列挙処理中はSyncRoot等でロックしないと別スレッドでの変更に対応できない あとラッパーっていうのは元のオブジェクトに 新しい機能をかぶせるテクニックの総称だから元の本体だね 削除も普通にできる
- 276 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 08:49:30 ]
- object ICollection.SyncRoot
{ get { if (this._syncRoot == null) { Interlocked.CompareExchange(ref this._syncRoot, new object(), null); } return this._syncRoot; } }
- 277 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 11:09:13 ]
- 説明ありがとうございます。
>>275 列挙している間に別スレッドからの追加・削除処理が入る場合は基本ロックが必要そうですね・・・ そこまで処理速度が必要そうなわけでもないので、ひとまずロックさせて使ってみようと思います。 >>276 結局は内部で専用のロックオブジェクトを提供してくれているだけという感じでしょうか
- 278 名前:デフォルトの名無しさん [2009/04/21(火) 13:29:20 ]
- Shared code , Shared source といった類のキーワードでgoogle先生に聞けば以前はあっさり見つかっていたのに・・・
どこにいったんだろう? VisualStudioのライブラリソースコード表示の説明リンクを次から1の直下に張り付けておいたら良いと思う。 誰か場所知っていたらリンク張って欲しいです。 >>277 実はソースコードみた方が圧倒的に正確だしてっとりばやい、凄い単純な実装なんで。 www.microsoft.com/downloads/details.aspx?FamilyID=8c09fd61-3f26-4555-ae17-3121b4f51d4d&DisplayLang=en とりあえず VisualStudio からではないですが、ソースコードです。 ダウンロードしてgrepして探してみてください。
- 279 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 18:40:07 ]
- 条件によって異なる複数の変数(string或いはint)を
配列化して(一列に並べて)、各変数に代入するメソッドを変数の個数だけ実行したいのですが、 デリゲートを使うとオーバーロードできないため、Object型を渡して判別するという事も考えたのですが納得できません。 unsafeのポインタを使うべきなのでしょうか。
- 280 名前:279 mailto:sage [2009/04/21(火) 18:52:28 ]
- すみません。具体的に言うと
foreach (string tmp in bufStr) { str = DataTypeCheck(tmp); if (str == null) { //・・ここでメソッドを呼び出してそれぞれ代入 } else if (str == "case1") { //・・代入する変数のリストを作成 } else if (str == "case2") { } } データ(string[])は以下のようになっており case1 a b case2 ・・・ この場合はa,bをcaseに応じた変数に格納します。
- 281 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 19:23:47 ]
- 具体的といいつつ酷く分かりづらいな
Func<T>でも使えばいいんじゃね privateなメソッドなら型制約とかもいらんっしょ
- 282 名前:279 mailto:sage [2009/04/21(火) 19:53:25 ]
- >>281
説明下手で、すみません。 ググりましたが、おそらくお察しの通りです。 感謝いたします。m(_ _)m
- 283 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:00:44 ]
- Dispose()のCLRにマネージされていないデータを解放するという説明を読んで思ったのだけど、
CLRにマネージされてるかどうかってのはつまりどういう事なの?
- 284 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:12:25 ]
- ざっくりいってIDisposableがマネージド、IntPtrがアンマネージド
- 285 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:23:50 ]
- >>283
C++なんかだと、COMやスマートポインタを使って、リファレンスカウンタで生存管理をしているんだが この方式だと、参照がなくなると同時に解放処理がされる。 対して、ガベージコレクタを使った.NETでは解放処理はメモリーが尽きたとき。 で、C++では参照がなくなると同時に解放処理を行う事を前提に組んであるケースが多いんだ。 だからC++の場合ちゃんとリファレンスカウンタで管理されているファイルシステムオブジェクトなどはこのタイミングでClose処理もされるのでCloseを忘れていても大丈夫 アンマネージをラップしたクラスを作るとこれが問題になることがある、これ明示的に開放する関数がDisposeだよという意味。 あくまでもラップした先のオブジェクトの解法、ラッパ事態はマネージドなので、ガベージコレクタで解放される。 たとえば.NETでStream系のオブジェクトでこれを忘れていると、Closeしわすれているとガベージコレクタで回収されるまでOpenされっぱなし。
- 286 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:42:28 ]
- >>283
CLRの関与していないところで確保したもの。主にWin32ハンドルとか。
- 287 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:27:12 ]
- IntPtrにAPIで取得したハンドルなんかもIntPtr.Zeroとかやった方が
いいんですかね…。基本的にマネージド以外の方法で取得したものは 全て何かしらの処理を加えた方がいいんでしょうか。
- 288 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:35:57 ]
- 意味が分からん
アンマネージドリソースの解放ってのはIntPtr.Zeroを変数に代入することじゃないぞ CloseHandleとかDeleteObjectとかのAPI関数呼び出しのことだぞ 処理した方がいいかどうかじゃない、必要な手順で解放する必要がある もちろんシステムグローバルな値とかでその必要が無いものもあるがな、ウィンドウハンドルみたいな
- 289 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 14:14:38 ]
- 請求書捨てても借金ちゃらにならない感じ
- 290 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:32:21 ]
- あとIntPtrを生で使うんじゃなくてSafeHandle使え
- 291 名前:デフォルトの名無しさん [2009/04/23(木) 22:37:01 ]
- VisualStudio2008のツールボックスで使われているみたいな、プッシュピンで表示/非表示を切り替えられるGUIは、.
Netの標準コントロールとしては提供されていないのでしょうか? 市販コントロールには似たようなものがあるようなのですが。 よろしくお願いします。
- 292 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:48:19 ]
- 標準には無い
- 293 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 23:42:08 ]
- オレそれ市販の買おうか真剣に悩んでる。
devexpressの試用版DLしたとこ。
- 294 名前:デフォルトの名無しさん [2009/04/24(金) 00:05:34 ]
- >>292,293
残念です。Microsoftも便利な部品はどんどん使えるようにして欲しいですね。
- 295 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 00:11:37 ]
- >>294
どんどんしてるんだけど、今、SilverlightとかASP.NETとかの優先順位がむちゃくちゃ高いから、 VS風ドックコントロールは、ちょっとやそっとの要望あっても当分後回しになると思う。
- 296 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 08:36:28 ]
- >>287
API直接操作するなら、APIの仕様通りに使わないとアカンで マネージド側の特徴もちゃんと考慮して、アンマネージドの処理がアンマネージドの仕様に合うように。
- 297 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 09:05:35 ]
- 【知的財産】中国:ITソースコード強制開示強行へ・制度を5月に発足…国際問題化の懸念 [09/04/24]
anchorage.2ch.net/test/read.cgi/bizplus/1240524654/
- 298 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 16:20:35 ]
- 質問ですが、Flashのムービークリップの様に、
同じ性質を持ったオブジェクトの中にオブジェクトを上限なく動的に入れる方法はありませんか?
- 299 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 16:29:21 ]
- List<T> じゃあかんの?
- 300 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 16:32:52 ]
- 表示上のオブジェクトという話かな?XAMLでどうよ。
- 301 名前:298 mailto:sage [2009/04/26(日) 16:56:29 ]
- >299-300
ありがとうございます。そこまで複雑な事ではないです。
- 302 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 17:06:03 ]
- じゃあどういうことよ、なのよ
- 303 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 17:09:44 ]
- int[] array = new int[999999];
とでもやって多めに確保しとけ
- 304 名前:デフォルトの名無しさん [2009/04/26(日) 17:11:07 ]
- >>301
むしろ>>298の説明のほうがそれいじょうに複雑なことではあります
- 305 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 18:35:03 ]
- Compositパターンのことを言ってるんじゃないの?
|

|