1 名前:デフォルトの名無しさん [2008/08/20(水) 17:15:27 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part29 pc11.2ch.net/test/read.cgi/tech/1216734995/
100 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:43:46 ] エスケープの方法はヘルプの「複合書式設定」参照
101 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:54:47 ] public struct MyStruct { public MyStruct(long value) { this.TotalValue = value; } [FieldOffset(0)] public long Total; [FieldOffset(0)] public short Value1; [FieldOffset(2)] public short Value2; [FieldOffset(4)] public short Value3; [FieldOffset(6)] public short Value4; } //コンパイルエラー フィールド 'Value1~4' は、コントロールが呼び出し元に返される前に割り当てられている必要があります。 ちゃんと割り当てられてるじゃんね。意外とコンパイラもお馬鹿さんだな。 まーどーでもいいことなんだけど、過疎ってるからネタを投下してみた
102 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:56:14 ] struct MyStruct{ public MyStruct(long value){ this.TotalValue = value; } [FieldOffset(0)] public long TotalValue; [FieldOffset(0)] public short Value1; [FieldOffset(2)] public short Value2; [FieldOffset(4)] public short Value3; [FieldOffset(6)] public short Value4; } コードミスったのはご愛敬で
103 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:57:24 ] [StructLayout(LayoutKind.Explicit)] struct MyStruct{ public MyStruct(long value){ this.TotalValue = value; } [FieldOffset(0)] public long TotalValue; [FieldOffset(0)] public short Value1; [FieldOffset(2)] public short Value2; [FieldOffset(4)] public short Value3; [FieldOffset(6)] public short Value4; } 属性付け忘れもご愛敬で。。。 スレ汚しすまない
104 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:02:22 ] いや、コンストラクタで初期値セットせな
105 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:04:39 ] Console.Writeline("{{0}}", 10); で {10} を期待したところ ぶーぶー 言われました >>100 さん、ありがとうございます おかげさまで解決しました >>99 さん、二度とくんな
106 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:06:11 ] 98 :デフォルトの名無しさん [↓] :2008/08/28(木) 16:35:53 {0}をコンソールに表示する方法おしえてください 105 :デフォルトの名無しさん [↓] :2008/08/28(木) 17:04:39 >>99 さん、二度とくんな wwwwwwwwwwwwww
107 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:10:40 ] >>99 はたしかに{0}が出力される。 引数無いとそのまま出るみたいよ。 よって、>>98 の質問の答えにはなってる。
108 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:11:20 ] つーか最初から>>105 の内容で質問すりゃいいのに。
109 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:20:27 ] 100の先もエスケープには限界あるから分けて出力する必要があるかもよって書いてるしな
110 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:28:45 ] 夏だねぇ
111 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:24:32 ] >>110 そのセリフはちょびっと遅いぞ。 言ってみたかったの? 来年またトライしてみよう!
112 名前:デフォルトの名無しさん [2008/08/28(木) 19:24:54 ] 一生懸命勉強して、大きなプログラマになるんだ!
113 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 20:14:11 ] System.Security.AllowPartiallyTrustedCallersAttribute というエラーが出てJScriptからDLLを呼び出せません… 呼び出せるDLLと呼び出せないDLLがあるのですけれども どこが違うのでしょうか?よろしくお願いします m(_ _)m www.isla-plata.org/wiki/pukiwiki.php?%B3%AB%C8%AF%A5%EA%A5%BD%A1%BC%A5%B9%2FJScript%2F%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%A4%AB%A4%E9.Net%20Framework%A5%AF%A5%E9%A5%B9%A4%F2%CD%F8%CD%D1%A4%B9%A4%EB%A1%CA%A5%CE%A5%A6%A5%CF%A5%A6%CA%D4%A1%CB
114 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 20:35:51 ] ・セキュリティ上好ましくない為、部分的に信頼されたアセンブリは、厳密な名前付きのアセンブリを呼び出す事ができない。 それだと不便なのでAllowPartiallyTrustedCallersAttributeが付いた物に限り、利用可能になっている。 詳しくはMSDN見て来い
115 名前:デフォルトの名無しさん [2008/08/29(金) 02:06:09 ] public int hoge(ここでエンターキー) ↓ public int hoge { } 上のようにエンターキーでブロックが自動挿入されるように出来ないでしょうか? VBから移行してきたばかりなので入力に手間取ってしまいます。
116 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:09:24 ] 一生VBやってればいいよ こっちくんな
117 名前:115 mailto:sage [2008/08/29(金) 02:11:02 ] 自己解決しました 自動で複数行ブロックが挿入されるようにすると全部複数行になってしまうんですね・・・
118 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:12:01 ] >>116 はじめまして。
119 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:27:04 ] C#はいちいち面倒なことが多くて、やっぱりVBの方がいいですよ。
120 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:28:40 ] ID出してくれええ
121 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:49:25 ] 誰だお前?死ねよ
122 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 03:59:15 ] 言語に優劣をつける気はないが、VBの If a = b Then だけはどーーしても違和感&不安になる
123 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 04:00:27 ] 自分の場合、ときどきIf a == b Thenって書いちゃうよ。
124 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 09:15:44 ] VBの場合>>115 みたいな機能が無いとタイプ量が多すぎるからな C#でもifとかforとか使うときにコードスニペットが使えるよ
125 名前:デフォルトの名無しさん [2008/08/29(金) 10:08:03 ] c# から Windows のスタートメニューを開きたいのだけれど、どうやったらできますか? SendKeys.Send("^{ESC}"); としても開けませんでした。
126 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 10:28:05 ] >>125 [DllImport("user32.dll")] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); const uint WM_SYSCOMMAND = 0x112, SC_TASKLIST = 0xf130; private void button1_Click(object sender, EventArgs e) { SendMessage(this.Handle, WM_SYSCOMMAND, new IntPtr(SC_TASKLIST), IntPtr.Zero); }
127 名前:デフォルトの名無しさん [2008/08/29(金) 10:40:16 ] >>126 早々にありがとうございますm(__)m ばっちりです。
128 名前:デフォルトの名無しさん [2008/08/29(金) 18:06:00 ] TcpClient の受信処理で1024Byteずつ受信してメモリストリームに書き出しています。 NetworkStreamのDataAvailableが続きのデータがあるにもかかわらず、 FALSEを返して受信が終了してしまいます。 下記サイトでも同じ問題が記載されています。 www.niseko.or.jp/BlogX2/categoryview.aspx/UPnP 現在do〜while間にSleep(50)を入れると正常に受信できるのですが、 他にも解決策はありませんか? //クライアントとの間の通信につかうストリームを取得 NetworkStream ns = server2.GetStream(); //server2は、TcpClient //クライアントから送られたデータを受信する System.IO.MemoryStream ms = new System.IO.MemoryStream(); byte[] resBytes = new byte[1024]; int resSize; do { //データの一部を受信する resSize = ns.Read(resBytes, 0, resBytes.Length); //受信したデータを蓄積する ms.Write(resBytes, 0, resSize); Thread.Sleep(50); //ここで50ミリ秒スリープさせると正常に受信できる } while (ns.DataAvailable); string responsStrings = enc.GetString(ms.ToArray());
129 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:12:45 ] Readの返値で判断するのが吉
130 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:15:22 ] リンク先見ずに書いたけどリンク先でもそう結論してんじゃんか 何が悲しいのかさっぱり理解できないが DataAvailableがtrue返すのは多分その時点でネットワークからは読み取り終わってるから Read前なのでバッファには残ってる
131 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:18:51 ] なんか適当なことを書いてしまった DataAvailableがtrueになるのはバッファにデータが溜まってるとき Read連続で呼び出すとネットワークからの読み取りが遅れた場合にfalseを返すのは当然
132 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:34:28 ] MSDNを正確に読めよ
133 名前:128 mailto:sage [2008/08/29(金) 18:55:56 ] >>129 Readの返値で判断するのが吉 このReadの返り値は自分で用意したバッファサイズが返るだけのようですが・・ (resBytesのサイズ) >>131 了解です。 100分の5秒遅れただけでfalseでは使えないと言うことですね。 MSDNのサンプルに騙されたか・・ 1byteずつ読んでエンコードしてCONTENT_LENGTHを読んだ方が確実ですね。
134 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:00:56 ] もっぺんReadの解説読んでこい
135 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:02:06 ] Visual C# 2008 Expressを使ってるんですけども デバッグビルドとリリースビルドはどうやって切り替えるんでしょうか
136 名前:デフォルトの名無しさん [2008/08/29(金) 19:13:05 ] MSDNはたまに意味不明なところもあるけど、それは君の技術力が足りなすぎていて理解できないだけ
137 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:17:07 ] >>135 FAQだね Expressをインストールしたらまずやるべきこと ツール→オプション→すべての設定を表示 にチェック プロジェクトおよびソリューション →ビルド構成の詳細を表示・常にソリューションを表示・作成時に新しいプロジェクトを保存 にチェック
138 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:19:54 ] NetworkStream..::.Read メソッド パラメータ buffer 型 : array< System..::.Byte >[]()[] Byte 型の配列。NetworkStream から読み取られたデータを格納するメモリ内の場所です。 offset 型 : System..::.Int32 データの格納を開始する buffer 内の場所。 size 型 : System..::.Int32 NetworkStream から読み取るバイト数。 戻り値 型 : System..::.Int32 NetworkStream から読み取るバイト数。
139 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:20:17 ] APIぐらいちゃんと読めよ
140 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:27:44 ] >>138 まだ続きがあるだろ。 解説 このメソッドは、データをbufferパラメータに読み込み、正常に読み込まれたバイト数を返します。 読み取ることができるデータが存在しない場合、Readメソッドは0を返します。 Read操作は、sizeパラメータで指定されたバイト数に達するまで、使用できるデータをすべて読み取ります。 リモート ホストが接続をシャットダウンし、使用できるデータがすべて受信されると、 Readメソッドはすぐに完了して、0バイトを返します。
141 名前:128 mailto:sage [2008/08/29(金) 19:30:03 ] おわ!理解不足だったか MSDNからコピってきました。 なにがいけないんだろう? // Examples for CanRead, Read, and DataAvailable. // Check to see if this NetworkStream is readable. if(myNetworkStream.CanRead){ byte[] myReadBuffer = new byte[1024]; StringBuilder myCompleteMessage = new StringBuilder(); int numberOfBytesRead = 0; // Incoming message may be larger than the buffer size. do{ numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length); myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead)); } while(myNetworkStream.DataAvailable); // Print out the received message to the console. Console.WriteLine("You received the following message : " + myCompleteMessage); } else { Console.WriteLine("Sorry. You cannot read from this NetworkStream."); }
142 名前:128 mailto:sage [2008/08/29(金) 19:41:00 ] あ、Readの解説ありがとうございます。 resSize = ns.Read(resBytes, 0, resBytes.Length); if (resSize == 0) break; とすればいいわけですね。 これは>>131 さんが言っている、 Read連続で呼び出すとネットワークからの読み取りが遅れた場合にfalseを返す に対応できますね。 みなさまありがとうございます。 50にもなって初めてのプログラミング、何もかもが分からないことだらけです。
143 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:51:36 ] 年齢は関係ないだろ
144 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:03:15 ] うむ、年齢は関係ないな。学ぼうとする気持ちが大事。
145 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:09:01 ] 新手の煽りか?
146 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:59:39 ] 50歳からのプログラミング
147 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:11:58 ] 暴れる50代は多いな。 pc11.2ch.net/test/read.cgi/tech/1204552981/738
148 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:25:12 ] >>137 遅レスですがありがとうございました
149 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 01:13:19 ] VBから移動組だけどはコードがシンプルでいいなあ インテリセンスがもうちょっと使いやすかったらよいんだけど
150 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 01:52:54 ] VC++からの移行組としてはインテリセンスがちゃんと効くだけで満足です
151 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 02:31:56 ] JavaやらVBやらやってきたけど、Javaは言語の構造というかなんかすきになれなくて VBは簡単すぎて(;´д`)ってかんじがしてたんだけど、ようやく自分に最適な言語をみつけた。
152 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 02:37:52 ] そうですか。
153 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:11:32 ] >VBは簡単すぎて の意味がわからん。簡単な方がいいだろ
154 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:31:52 ] そのJavaは言語の構造ってのは何のこと? 謎が多い奴だ・・・
155 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:42:29 ] Javaは周辺技術を追いかけるのに疲れたってのはあるな。
156 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:47:38 ] C#も凄いけどな。それよか、VBは追いかける必要なく得て、いつも言語に組み込んじゃう。だからVBの追いかけなくていいし、面倒ないからいいかなと思うよ。
157 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 04:22:32 ] VBでなれちゃうと他に乗り換えるのがめんどくさくなってくる。
158 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 04:37:42 ] それはない
159 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 04:48:31 ] >>156 C#はMSだけ追いかけていればいいけど、JavaはSun以外からもいろいろ 出てくるのがしんどい。
160 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 05:41:00 ] もうDしかない!
161 名前:デフォルトの名無しさん [2008/08/31(日) 07:06:41 ] private void 終了XToolStripMenuItem_Click(object sender, EventArgs e) { } ↑から↓を呼び出すにはどう書けばよいのでしょうか? private void Form1_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; }
162 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:19:10 ] フォームデザイナでイベントを定義してあれば、勝手に呼ばれるだろ。
163 名前:デフォルトの名無しさん [2008/08/31(日) 07:30:39 ] Linq to xml の事で少し手ほどきしてください XmlSerializer 等を使うと、適当に作ったクラスを一発でシリアライズできますが 同様な感じで、適当に作ったクラスから XElement を作る方法で良い方法はありますでしょうか? またその逆も簡単にできそうであれば教えてください。 現状ではXmlSerializerをStringWriterを経由させているのですが、なんとなくバカっぽいので・・・
164 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:34:47 ] >>162 デザイナで終了XToolStripMenuItem_Clickのプロパティから Clickイベントのドロップダウン一覧にForm1_FormClosingが出てこないので 定義できないのですが、ほかに方法があるでしょうか?
165 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:38:22 ] >>164 デザイナでフォームのイベントを見てみ ここでイベントを割り当てれば、イベントハンドラ定義が追加される。 フォームデザイナでどういうことをすると、どういうコードが追加されるのか 確認してみるといいよ。
166 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:44:32 ] 終了XToolStripMenuItem_Clickからフォームを閉じたいって言うこと? でもe.Cancel=true;って書いてるし何がしたいんだかよくわかんね
167 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:48:10 ] >>163 ぐぐったらこんなのがヒットした。 ttp://www.hanselman.com/blog/MixingXmlSerializersWithXElementsAndLINQToXML.aspx XDocumentのCreateWriterメソッドがポイントみたいね。
168 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:53:43 ] >>165 >>デザイナでフォームのイベントを見てみ これはデザイナのプロパティウィンドウのイベントボタンを押したときの一覧ですよね? >>161 はここからダブルクリックで追加したコードですが 終了XToolStripMenuItem_ClickもForm1_FormClosingもどちらにも お互い出てこないのでイベントハンドラを共有できないのですがどうすれば良いですか?
169 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:59:03 ] >>164 ボタンからは普通にフォームを閉じるなりアプリを終了するなりすればいい。 >>165 ができていれば、フォームが閉じられる前にFormClosingを拾えるはず。 で、イベントがキャンセルされてフォームは閉じられない。 何がしたいんだ?
170 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 08:11:58 ] >>166 実際にはかなり複雑な分岐処理が書かれているので、ほとんど省略してます。 >>169 VBだと Form1_FormClosing(sender,e) で行けた様な気がしたので気になってDesigner.csでEventHandlerを直接いじっても FormClosedも共有できないみたいだし、C#の仕様ということでしょうか?
171 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 08:25:58 ] ボタンから閉じないけど同じ処理をしたいのなら別な関数として書いてそれを両方から呼び出したほうがよくね?
172 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 08:28:48 ] 片方が EventArgs もう片方が FormClosingEventArgs つまりそういうことだ
173 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 08:37:04 ] >>170 Form1_FormClosingにブレークポイントを設定したら、フォームを閉じるときに ちゃんと呼ばれるか? 呼ばれるなら、終了メニューにApplication.Exit();とかthis.close();とか書けば いいっしょ。
174 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 11:28:13 ] KeyedCollection使うときにGetKeyForItemをオーバーライドするためだけに それぞれ派生クラス作るのってアホらしくない? デリゲートでキーを返す派生クラスを一つだけ作るとか?
175 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 18:44:33 ] それでもいいと思うが ObjectModel 内のクラスの存在理由とかそんなの 勘違いしてないか?
176 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:06:54 ] 日本語対応のフォントのみを取得する方法ってあります? FontFamilyでインストールされてるフォントを全部取得することはできたんですが そこから欧文フォントとかを除く方法がわかりません。
177 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 14:03:41 ] >>170 クラスとキャストの概念が分かってないみたいだねぇ。さすがVB。 Form1_FormClosing(sender,new FormClosingEventArgs()) やりたいのはこれかな?
178 名前:170 mailto:sage [2008/09/01(月) 18:00:03 ] >>171 やっぱりそれが一番勝手が良いですね。 >>172 ようするに、キャストできない型なのでそのままだと呼び出せないということでしょうか。 >>173 なんか一番わかりやすいのでthis.close();を使ってます。 >>177 例えば Form1_FormClosing(sender, new FormClosingEventArgs(CloseReason.None, true)); 見たいにコンストラクタを初期化してやるとエラーにならないんですが 引数なしだとエラーになります。 型が違うイベントを呼び出すときは、毎回コンストラクタを初期化しないと 呼び出せないということでしょうか。 クラスとキャストの概念がわかってるかどうかは自信がありませんがキャストは出来ませんよね?
179 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 19:28:40 ] >>178 >>177 の言ってることもトンチキだから気にしない。 君が分かってないのは>>177 の言ってるようなことじゃない。 君が分かってないのはイベントとイベントハンドラだよ。 イベントハンドラ(例えばForm1_FormClosing())というのは、 イベント(例えばフォームが閉じられた)時に「呼ばれる」ものであって、 それを呼び出すと何かが起こる(例えばフォームが閉じる)わけではないよ。 VBの人にありがちな倒錯だね。 原因と結果が逆立ちしてる。
180 名前:170 mailto:sage [2008/09/01(月) 19:46:54 ] >>179 あー、そうか 一般論としてはイベントとイベントハンドラについて理解してるつもりだったけど 今回の件に関しては全く理解できてなかったということですね (^^; ものすごく本末転倒なことを聞いてましたね、精進します みなさん、有難うございました
181 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 19:47:29 ] VS2008sp1のインテリセンス日本語化はいつなんでしょうか?
182 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 19:54:20 ] >>178 とりあえず新規のWinFormプロジェクトを作る。 フォームデザイナでフォームを選択し、イベントハンドラの FormClosingをダブルクリックする。 Form1_FormClosingにMessageBox.Show("FormClosing"); を書く。 実行する。 メニューを追加し、終了メニューにthis.close();と書く。 実行する。 これでイベントの流れの概略がわかるか? FormClosingをダブルクリックする前後にForm1.Designer.csも 見てみるといい。
183 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:01:50 ] usingについての質問です ネットワークプログラミングをしているのですが、通信が終わったときにNetworkStreamを閉じようと思い、以下のようなコードを書きました。 using( NetworkStream Stream = new NetworkStream(socket, true) ) { … 事前の処理 … Thread newthread = new Thread(Func); newthread.Start(new object[] { Stream, newthread }); } このような場合、NetworkStreamはどのように扱われるのでしょうか? # threadの処理が終わるまで保持される? # newthread.Startが呼ばれたあとにDispose()されてStreamはnullになる?
184 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:16:20 ] スレッドを作り終わった瞬間に削除される。
185 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:16:42 ] >>183 どう考えてもすぐに破棄されるに決まってる。
186 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:17:47 ] まあnullになるは意味不明だけどな。
187 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:28:43 ] 匿名デリゲートを使うと、nullにならない事が確認できるよ
188 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 10:48:39 ] >>187 usingに使う変数の宣言は()内じゃなくてもいいんだよ ローカル変数でもフィールドでもおk
189 名前:183 mailto:sage [2008/09/02(火) 15:24:14 ] 皆様ありがとうございました。 # nullにならない、usingの使い方に関しては大変勉強になりました。 もう一つ質問させてください。 上のようなコードで、例えばFunc内で、 void Func(object obj) { NetworkStream newStream = (NetworkStream)((object[])obj)[0]; … byte[] abBuffer = new byte[256]; newStream.Read(abBuffer,0,256); … } などの操作を行った場合、NetworkStreamは既に破棄されており、利用できないのでしょうか。
190 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 15:31:18 ] そんなわけない
191 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 15:34:06 ] まあほとんどの場合Disposedだろうな
192 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 15:35:58 ] objが
193 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 16:45:03 ] >>190 お前はプログラミングするんじゃねーぞ
194 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 16:51:02 ] ローカル変数が何時までも残ってたらローカルじゃないでしょ
195 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 16:53:58 ] >>194 何の話?
196 名前:189 mailto:sage [2008/09/02(火) 18:44:51 ] ありがとうございました。 thread内でNetworkStreamを閉じるなど、コードを書き換えて検討し直してみます。
197 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 19:07:50 ] 適当なディレクトリ内のファイルを列挙して、キューにどんどん突っ込んでいきたいのですが、 Directory.GetFilesなどではそのディレクトリのファイルを全て列挙するまで結果を得ることが出来ません、、、 ファイルを1つずつキューに入れていくためには、WinAPIを呼ぶしかないのでしょうか。
198 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 19:13:27 ] どんなストレージ使ったら問題になるのか分からないがまあその通り フロッピーとかか
199 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 19:14:25 ] >>196 いや、ちゃんと調べたほうがいい、間違いが混ざってる。
200 名前:デフォルトの名無しさん [2008/09/02(火) 19:51:37 ] 質問です 1.findControlを使用して、コンテンツページからマスタページのDataListを取得 2.staticなメソッドに取得したDataListを渡して、DataListへの設定を行う。 3.画面表示 こうすると、DataListへの設定が反映されません。 staticなメソッドで行わずにコンテンツページ内でDataListへの設定を行った場合は 問題なく動くのですがなぜでしょうか。