この時間におつかれさん
7 :
デフォルトの名無しさん :2007/05/09(水) 01:15:59
注:私の有意義な発言に対し、自分の理解不足を棚に上げ煽り、1行レス で返す方が多いようですが、そのような方はスレの皆様を混乱させるだけでなく スレの雰囲気を崩しかねないのでお黙り下さい。 また質問者は回答者に知識を披露する場を与える貴重な存在なので、 質問者を見下した回答、あまりにも儀礼を欠いた回答も厳重に禁止いたします。 忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、 その辺ご承知下さい。なお、当方が質問に対して有意義な答えであると 判断した方には評価いたしますので各自よく調べ、よく考え正確な回答をするように。
8 :
デフォルトの名無しさん :2007/05/09(水) 01:56:46
>>7まじ?
昔はやったコピペだ 相手にすんな
なんかC井も入れたくなるようなスレタイだな
C# ↑これって♯(シャープ)じゃなくて#(ナンバー)だよね。いいのかね。
12 :
1 :2007/05/09(水) 13:51:26
>>11 仕様書ではこれが正当なので先頭にしました。(参照: ウィキペディアとか
C#勉強する前にC言語勉強したほうがいいのかな?
別物です。ご自由に。
ありがとうございました
そういえばいつの間にかスレタイに # 使えるようになってたんだな。
C#相談室 1 名前:名無しさん♯ [] :2000/12/18(月) 13:06 作ってみました。 ========== 使えない時期ってあったのか?
2スレ目見たら♯になってた。 一番最初に使える時期があって、 それから使えなくなって、 また使えるようになったのか。
COMインターフェイスについて質問です。 IHoge hogeを複数のインターフェイスにキャストするとき、 たとえば IFoo foo = (IFoo)hoge; IBar bar = (IBar)hoge; みたいにして使用した後、解放するときは もとのhogeをReleaseComObjectするだけでいいの? fooやbarに対してそうすると "RCWから分離されたオブジェクトを操作できません"みたいな 例外が出るんですが。 キャストってQueryInterface相当じゃなかったの?
RCW で一度ラップしてるってのがポイントだ。
C/C++あがりのひとです。 C#では、#defineで値のある定数が定義できませんがそれに変わるものや方法はあるのでしょうか? 当方は、(ほぼグローバル)定数専用のクラスをおこしてそこにずらずらconstしてます。 定番の方法とか知りたいです。
グローバルな定数を使わない 妥当なクラスに(静的かどうかは意味に合わせて)プロパティを用意する
internal なら const つかってもいいし 値が絶対に変わることがないのなら public でもいい
グローバル定数の代わりなら、列挙型使えばいいのではないか?
便乗質問
>>24 > グローバルな定数を使わない
グローバルな定数は定義できない。
じゃないの?
> 妥当なクラスに(静的かどうかは意味に合わせて)プロパティを用意する
これは、
>>23 の言う、定数専用クラスもその一例。
ってことでOK?
それとも逆に、
定数専用クラス(静的クラス)も含め、グローバルに扱える定数は使わない。
「妥当なクラス」とは、個々のオブジェクトの独立性を保てる範囲である。
ってことになるのかしらん?
C#ではグローバルスコープには名前空間とクラスしか書けないからグローバル定数はもともと存在しない。
まあそんな理屈はどうでもいいよ 全部クラスに属してるから純粋なオブジェクト指向だ っなんてのと一緒だな。
public static class Global { public const int Teisuu = 5; public static int Hensuu = 0; public static string Mojiretsu = ""; }
>>23 たとえば円周率πがどう定義されているかをMSDNで調べてみると参考になるかもしれない。
グローバル定数専用クラスも結構だが、名前空間(クラス名含む)を適切に定義できるかどうかがキモじゃないの。
性的なプロパティにするかどうかは意味次第ってことで。
名前空間MyのクラスGlobalに定義でもしておけ。
保守の面でも、ソリューションごとか、アプリごとに、なにかしらnamespaceつけるのが妥当だよな。
>>23 普通は、関連のあるクラスの const メンバ変数で定義しとく。
どことも関連しなさそうなら設計が悪いかも。
まあ、定数専用のクラス作るのもいいんだけど。
で、もしなんだけど、public な定数でかつ、
仕様の変更に伴って変わる可能性のある定数なら、
できれば static なプロパティか、static readonly なメンバ変数にしといた方がいい。
const にすると、修正したときに利用側でも再コンパイルが必要になるから。
πみたいに仕様が変更されても絶対といっていいほど定数であるものとか
private な定数なら迷うことなく const でいいんだけど。
DataSet.ReadXml()による更新以前と以後の差分をとりたいです。 (更新を判定できるRSSリーダをつくりたい) まったく同じ内容のXmlで更新した場合、 DataSet.GetChanges(DataRowState.Added)で差分だけとりたいのに 全部とれてしまうのですがこれはなぜでしょう? AcceptChanges()はGetChangesのあと実行しています。
>>35 ですが、わかりづらくて申し訳ありません。
現在のDataSetと同じ内容のXmlをReadしたとき、GetChanges()
したら空のDataSetが返ると期待しているのに、なぜだかすべての
テーブル内容が返ってくるということです。
以前 内容1 DataRowState.Unchanged 以前 内容2 DataRowState.Unchanged 以前 内容3 DataRowState.Unchanged 以前 内容4 DataRowState.Unchanged 以前 内容5 DataRowState.Unchanged 以後 内容1 DataRowState.Added 以後 内容2 DataRowState.Added 以後 内容3 DataRowState.Added 以後 内容4 DataRowState.Added 以後 内容5 DataRowState.Added こうなってるだけじゃなくて?
>>36 同じ内容を再リードしてるんならそれで正しいと思うが?
全てを更新してるからな。
VC#EEにdelphiにあるTChartのようなものはありますか?自分で作るの大変。
c# グラフで検索。
ご返事ありがとうございます。
>>37 Addedは新規に追加された場合ですよね。この場合は既存のRowを
上書き(Modify)することにならないかなと思っていたのです。
>>38 ReadXml()は一旦全部消去して作り直すということでしょうか。なら、
更新前と更新後のDataSetインスタンスを別に保持しておいて差分を
とろうと思います。片方のRowを片っ端からもう片方に上書きしたとき、
Unchanged(DataSet1だけのRow), Added(DataSet2だけのRow),
Modify(両方にあるRow)となると考えてよいでしょうか?
「片っ端から上書き」って具体的にどうするつもりなんだろう?
PrimaryKeyがないテーブルにImportRowしていくなら結局
>>37 と同じ結果になるよ
>>42 ありがとうございます。
「PrimaryKeyがない場合、テーブルに同じRowが重複して追加される」
(
>>37 は、XMLがもつRowは5個だが、重複して10個になっている状態)
という理解でよろしいでしょうか?
ReadXml()したとき、更新前と更新後でもRowの数が変わらなかったので、
「ReadXml()は既存のテーブル内容を破棄する」
ということではないのでしょうか?
「主キーを設定しRowの上書き途中でConstraintExceptionが投げられたとき、
そのRowの状態をModifyにする」これでうまくいくでしょうか?
>>43 >「ReadXml()は既存のテーブル内容を破棄する」
DataSet ds = new DataSet();
XmlTextReader reader = new XmlTextReader("
http://slashdot.jp/slashdot.rdf ");
ds.ReadXml(reader);
reader.Close();
Console.WriteLine(ds.Tables["item"].Rows.Count);
reader = new XmlTextReader("
http://slashdot.jp/slashdot.rdf ");
ds.ReadXml(reader);
reader.Close();
Console.WriteLine(ds.Tables["item"].Rows.Count);
……破棄されてる?
>主キーを設定しRowの上書き途中で
上書きできるなら重複してることが既に分かっているわけで、
それを判別するためにはDataRowCollection.Findを使用済みなわけで、
nullが返ってきたRowが差分だってことで問題は解決されてない?
>>44 おっしゃるとおりで解決しました。自分の馬鹿さ+睡眠不足で、
頭おかしくなってたみたいです。ありがとうございました。
最初にAが入ってるところにさらにAを読み込んだ。 A → A+A さて更新部分はどこ?
は?
なにその抽象的な
なぞなぞなんじゃない? 答えはなんかの駄洒落だよ、きっと
ずつーにバファリン♪
Visual C# 2005 Express Editionを使用しています。 コンソールアプリケーションとしてある動作をするファイルを作成しました。 これをWindowsアプリケーション上にあるボタンクリックにより起動させるには どのようにすればよいのでしょうか? 大まかなヒントだけでもかまいませんので、どうぞよろしくお願いします。
大まかなヒント以前に質問が大まかすぎるっての。 取りあえず System.Diagnostics の Process クラス調べれ。
>>53 さっそくどうもありがとうございます。
おかげさまで先に進めそうです。
とりあえずふらっとすれレベルの質問だろそれ。
どういう基準でふらっとスレと住み分けしてるの? ここ: 言語は理解してるが使い方がわからない/自分で問題箇所を絞れる ふらっと: 言語自体よくわかってない/何をどうしたらいいのか,何がいけないのかわからない みたいな感じ?
> ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 > 勇気をもって書き込んでください。 質問者次第って事で良いんじゃね
俺様が見てウンザリする質問→ふらっと ってことだろう
知ってる人間なら分かりきったことでも。 質問者にとっては全く分からない、雲を掴むようなもので、 どういう質問の仕方をしたらいいのか分からないもんだよな。 2ちゃんの専門板はどこ行っても、素人お断りの雰囲気があるけどね。
>>59 どんな地獄にも一人ぐらい仏はいるもんだ。
本当に初心者ゆえに(それなりに自分で理解する努力はしているにもかかわらず)
分からないと思われる質問なら回答してもらえる可能性は高いでしょ。
ただの怠惰な「どちて坊や」だから叩かれるか無視されるんだよ。
いいじゃん怠惰だろうがなんだろうが。 それがイヤなら答えないだけだし。 実際、普段答えもしないくせにそういう「ルール」みたいな話になると 途端に饒舌になるやつの方がウザい。 他人が困ってても見向きもしないヤツに限って、自分のときは 「オレはこんなに大変だ」みたいにアピールしたり不満漏らしたり。
>>61 お前ひょっとして今疲れてない?あまり無理はするなよ。
何度も繰り返されてきた議論をまた同じように蒸し返す奴はウザイよね
過去スレ読んでないだけだと思うよ。 というか、39スレも読むの大変だし。
どこの質問スレも定期的にこんな感じになるね
スルー。 それは精神がタフでないとできない。 知性が低いとできない。 勇気がないとできない。 おれにはできない。
SQLserver2000のdatetime型にyyyy/mm/ddを書き込みたいですがうまくいきません DateTime.ParseExactを使ってもうまくいきませんでした 教えてくださいお願いします。 datetime以外の部分はすべて順調です。
DateTime.Parse(string + " 00:00:00") にすると楽
>>67 ParseExact使っているのは大変よろしい。
でも月はmmじゃなくてMM。mmは分です(minutes)。
70 :
67 :2007/05/14(月) 14:02:33
string WriteDate = DateTime.Today.ToString(); 0:00:00ってのをヒントに上記のやつでいけました もともとうえのでやってたんですけどSQLのinsertの部分で '使うの忘れてたみたいです ありがとうございました。
SQL文にyyyy/MM/ddを追加したいってことだったのか
'つけて無いのわすれてて軽くはまって わけわからなくなってました
>>67 というかMSSQLなら素直にパラメタライズクエリ使えよ
何やってんだ。
…ん?ひょっとしてWriteDateって挿入した日?なら
GETDATE()を使え
TableAdapterでUpdateしたときに新規追加されるデータのAutoIncrementの値を取得したいんですが、どうすればいいんでしょう??
75 :
デフォルトの名無しさん :2007/05/16(水) 19:04:07
hage
TableAdapterにAutoIncrementプロパティってあるの? それにUpdateしたときに新規追加されるデータって表現はおかしくないかな?
質問の意図も読み取れないバカは黙ってろ
AutoIncrementがTrueかFalseか知りたいだけだろ?
違うよバカ
読み取れてるんなら、答えてやれよ。上級者。
そんなんもわからんのなら辞めれば^^;
空気悪い。
ええい、しっかりせんかい
85 :
デフォルトの名無しさん :2007/05/19(土) 15:02:33
86 :
デフォルトの名無しさん :2007/05/19(土) 15:39:33
C#というか.NETでローカルのDBとしてBase(OpenOfficeのデータベース)を 使う事ってできる? Accessじゃないと駄目なのかな? もしできるならやり方とか書いてあるサイトを教えてもらいたいです
>86 ODBCのドライバとかないのか?
.NETでRPCみたいなのってないの?SOAPみたいな重いのだけ?
RPC と SOAP は同列に並べることはできんだろ リモーティングになら IpcChannel が .NEt 2.0 で追加された .NET 3.0 の WCF でも NamedPipe を使える あとは MSMQ とかか?
90 :
デフォルトの名無しさん :2007/05/20(日) 13:52:08
SOAPが重いって脳腐ってないか?
発酵してるんだよ
92 :
側近中の側近 ◆0351148456 :2007/05/20(日) 18:01:22
>>67 ,70
(っ´▽`)っ
っていうか、時分秒は入れなくていいのか?
datetime型なのに時分秒が入ってないと
後で困るかも。整列させるときとかね。
いっそのことvarcharでいいんじゃね?
時分秒が入ってないのはもうdatetimeとはいえないのでは?
93 :
デフォルトの名無しさん :2007/05/20(日) 19:04:54
なんかアホな質問だったらごめんなさい。 lockについてなんですが、 クラスのオブジェクトにたいして読み書きするメソッドAdd(),Remove()と 読むだけのメソッドRead1(), Read2() とがありまして、 Add() や Remove() では他のメソッドと同期したいんですが、 Read1() ⇔ Read2() 間では排他にしたくないんです。 こういう場合ってどうしたらいいんでしょうか。
ReaderWriterLock 使え
95 :
デフォルトの名無しさん :2007/05/20(日) 19:23:18
C#で書かれたwindowsアプリのサンプルが 大量に載ってる教本ってないですかね? サンプルプログラムではなく アプリとしてのってるのがいいのですが、見つかりません。 VBAやperlではたくさんあるんですが・・・。 検索すると、カットシステムから出版されている 「.net FrameworkプログラミングテクニックVol3」っていうのが かなり近い感じですが、もう読み終わってしまったので 更なるステップアップを目指しています。 オープンソースのフリーソフトを読むというのも考えたのですが、 解説があるのと無いのでは理解する速度が断然違いますし、 変な癖がついたりするのも怖いです(経験あります) 該当する書籍、資料などありましたら教えて頂けると幸いです<(_ _)>
アプリならCodeProjectからダウンロードすればいいと思うが。 あれじゃ駄目か?
98 :
デフォルトの名無しさん :2007/05/21(月) 00:18:21
TreeViewいじってて気付いたんですが、 TreeNodeのnodeがあったとして 普通にnode.Text = "hoge";ってやるよりも いったんnodeを削除して同じ場所に新しい"hoge"ノードを作った方が 早いような気がします。 ただ、無限ループで繰り返して計測した訳ではないので あくまでも「気がする」の域です。(こう書くと釣りっぽいですが(^^; ちなみにBeginUpdate()は使っていません。 (できない場所だったので) これって何か理由でもあるんですかね。
クマー
ビロニストが混じってるようだ。
101 :
sage :2007/05/21(月) 00:54:16
こんな餌に俺が...
>無限ループで繰り返して計測 さて、ここは無限ループでどうやって計測するのか議論するスレになりました。 しかも繰り返してですよお客さん
103 :
95 :2007/05/21(月) 02:54:25
>>96 レス遅れてすいません。
検索してみましたが、これはどういうサイトなんですか?
英語ダメなもんで orz
とりあえず、ソフトやコードのサンプルがたくさんあるようですが・・・。
想像していた物とは違いますが、これはこれで勉強になりそうです。
良いサイトを教えて下さりありがとうございます。
英語がダメって小学生かよ。
>>103 英語からの情報を諦めてたらプログラマとしての成長が早いところで頭打ちになるよ。
プログラミングの勉強と並行して英語もやった方がいい。
小説などと違って簡単な言い回しでの説明が多いからすぐ慣れると思うよ。
あとは単語を辞書で引いたりググったりすれば大丈夫。
.Netのクラスライブラリも日本語版と英語版があるから読み比べてみるといい。
class Pair<T,U>があったときに Pair<Pair<string,Pair<string,int>>,object>のようなものをC#(.NET)の正規表現で解析できるものでしょうか? 教えてエロイ人(´・ω・`)
>>106 エロイ人ほど深読みしそうな書き方だけど、
class Pair<T,U>ってのは文字列?
string hoge = "class Pair<T,U>"; みたいな。
エロイ人は Type fuga = typeof( Pair<T,U> ); についての
パターンマッチの仕組みを聞かれている可能性を悩んでそうな希ガス。
>>107 紛らわしくてすいません。
class Pair<T,U>という定義があるとして、
文法的にはPair<Pair<string,Pair<string,int>>,object>という書き方ができますよね?
ここでstring s="Pair<Pair<string,Pair<string,int>>,object>";
と与えられたときに、正規表現で解析をして各タイプパラメータを引っ張ってこれるかという話です。
一発でできなくても最初の評価でGroupとしてタイプパラメータを引っ張ってこれて、そこに対して再度解析を行うということでもかまいません。
>>108 文字列の解析ね。
正規表現を使うことというのは条件なの?
普通に考えたらC#の構文解析器の該当部分をどこかからパクってくるのが正攻法な気がするけど、
エディタのマクロを組みたいとかそういう用途?
あと、ソースコード中のある箇所でAという型名に見えても、
using A=B; ってエイリアスされてるかもしれないから
厳密にはタイプパラメータとは言えないかもね。
実行中にその型名で検索しても何も見つからないってこともあるよ。
厳密な実装をやりたいのか、
誰かから引き継いだコードを泣く泣く書き換えたいだけなのかで答え変わりそうだね。
単にあるコードを解析したいだけなら、
いったんコンパイルしてリフレクションで解析でもいいだろうし。
もちろん出来ない。
111 :
109 :2007/05/21(月) 16:24:54
ああそうか。usingのエイリアスを持ち出すまでもなく ネームスペースや参照アセンブリが省略されてるから、 どっちにしろ型引数に書かれた文字列だけ得ても元の型は一意に定まらないね。 ややこしい例出してスマソ。
>>108 正規表現の言語クラスでは再帰的表現を扱うことはできない。
今回の場合は、複数回パターンマッチを行うようにしても無理。
>>109 いえ、とりあえず例に挙げたようなクラスで、元のGeneric型とそのタイプパラメータをタイプパラメータにGeneric型が入る可能性を考えた上でひっぱってきたいだけです。
その他の文法とかは考慮しませんし、エイリアス使ってる場合なども含めて厳密に型を引っ張ってこられるかは別問題です。
やりたいことを詳しく書くと上記の例に挙げたようなクラス名称を文字列として渡されたときに、元となるGeneric型やそのタイプパラメータを引っ張ってきて処理できるようにしたいんです。
もちろんアセンブリやネームスペースなども考慮しますが先に挙げた例は正規表現で再帰的な構造を含むものを処理できるかノ例としてあげたまでです。
正規表現の使用は絶対ではありませんが、構文解析よりはひとまず敷居が低いと使用を考えたまでです。
>>112 そうですか・・・
だとすると構文解析的なものを考えないとだめそうですね。
質問であります。
XMLシリアル化ってバージョントレラントなんだろうか?
「バージョントレラント」の厳密な定義とは違うかもしれませんが、
俺としては次の条件を満たせば必要十分なんですが。
(1) デシリアライズの際、XMLに、デシリアライズされるクラスが知らない
フィールドやプロパティが記述してあっても例外にならない。
(2) デシリアライズの際、XMLに、デシリアライズされるクラスの本来シリアル化対象のはずの
フィールドやプロパティが記述してなくても例外にならない。
簡単なコードでテストしてみると、どうもこれらの条件は満たしているっぽいのですが、
できれば何か裏づけが欲しいんですよね。
MSDNライブラリ見てもググって見てもどうも裏付けるような文章が見つからない。
↓の中氏の文章は(誌面の都合もあるんでしょうが)いまいち舌足らずだし。
http://www.microsoft.com/japan/msdn/netframework/skillup/core/article9.aspx
(1)はともかく(2)は気持ち悪くないか?
いや、バージョンアップ後も古いバージョンのデータが読めるためには必要な条件でしょう。
書いてナイアルよ。。
120 :
デフォルトの名無しさん :2007/05/22(火) 21:58:00
質問です。 time,Ampl -1.0005e-06,0.000623049 -9.995e-07,0.000540041 -9.985e-07,0.000442385 ・・・・ と数値が続いていくファイルでカンマより右の部分(Ampl)だけ抜き出すプログラムを作りました。 ファイルの内容をすべてstringにいれてから、要らない部分(カンマより左)をRemoveを使って消しつつ改行まで読み取る動作を繰り返すプログラムなのですが非常に遅いです。 より高速にする方法があれば教えてください
一行ずつ読めば?
遅いのはオブジェクトの生成を繰り返しているからだ。 後は自分で考えろ。
一行読む>カンマまで消す でやってみます
>>123 おいおいそんな下手なやり方じゃダメだよw
必ずしも一度に全部Stringにぶち込む必要はないが(不可能な場合もあるだろうし)
ファイルはチビチビ読まず一度にまとめて読む、という方針はむしろ正しい。
問題は読んだ後の処理にあると思われる。
String.Splitとか正規表現とか、いろんな方法を自分でいろいろ試してみるしかないよ。
上手い具合に教えないとな。 Cだったら簡単なのに…c#は難しい!とか言われそう。
なるほど、Splitよさそうですね! とりあえずRemoveで消すという無駄な処理をなくしてみます。 どうもです。
うそヒント scanf()
regexで一気にマッチできるような気もするな・・・
>>129 全読みしていいんならむしろ1行で
string r = Regex.Replace(input, @"^.*,(?<R>[^,]*)$", @"${R}", RegexOptions.Multiline);
適当に書いたんであっているか知らん。繰り返すんならCompiledつけたら早くなるかも
昨日質問した者です。
>>130 さんの正規表現をヒントに加工してからSystem.IO.StreamReaderで行読みするプログラムにしたら、かなり速くなりました。
ありがとうございました。
132 :
デフォルトの名無しさん :2007/05/23(水) 14:26:50
変な気もするけどそうなってんだからしょうがない。
>>132 >なのでsひょうか?
違います。
そのURLの例が示しているのは、hogeのプロパティとして返された配列を利用している
最中にhogeがGCされて、hogeのファイナライザがその配列を変更してしまうというケース。
それ以上でもそれ以下でもない。
>>134 クローンしてる。
public byte[] Hash { get { return (byte[]) hashValue.Clone(); }}
ホントだ・・・と思って良く考えてみると
>public byte[] Hash { get { return (byte[]) hashValue.Clone(); }}
程度のプロパティ参照はJIT(にせよ何にせよ)コンパイル時にインライン化されるから、
hashValue 参照後 Clone が動くまでの間にファイナライザが動く可能性があるわけか。
>>132 のケースでも hoge.func がインライン化されるような物の場合には、実行中に
別スレッドでhogeがGCされる可能性もあるということか・・・
なんで別スレッドとか出てくるのか意味がわからんw インライン化されようがなんだろうが、自分のスコープ抜ける前に死ぬ訳がないと思うんだが。
ローカルでのスコープてのはコンパイル時の概念 実行時には関係ないんだよ
まあスレッドはあまり関係ないが
>>138 なんか基本から勘違いしてない?
そんなわけないってw
MSDNライブラリに書いてある通り、GCが問題になるのは、
例えば変数がスコープ抜けた後もその変数への参照をアンマネージコードが
保持しているような場合だけだって。
.net2です。 toolstrip(ツールバー)上に置いたコンボボックスをツールバーの 幅に合わせて、いっぱいまで広げたいのですが、簡単な方法は ないでしょうか? ステータスバー上のアイテムならばSpringプロパティがあるのですが。
簡単なのはなさそう。
>なんか基本から勘違いしてない? >そんなわけないってw 知らないんなら適当なこというなよ。 ローカルのスコープは実行時には消滅する。 実行時にはメソッド全体でひとつのスコープ。 で、たとえローカル変数のスコープ内でも、最後にそのローカル変数を経由して 参照を使用した場所より後ろでは、その参照はGC対象になる。 さらにJIT最適化により、最後の参照しようが消滅する場合がある。 こうなると、最後のインスタンスメソッド呼び出し最中にはすでにGC対象となっている。
世の中、詳しい人がいるもんだな。
>>144 C#はスタックフレームとかは作られないの?
作られる
>>144 タイプミスのせいどうか何が言いたいのかよくわからないけど、
やはり何か勘違いしてるとしか俺には思えない。
たとえば メソッド() { Hoge hoge1 = new Hoge(); { //ここからローカルのスコープ Hoge hoge2 = new Hoge(); hoge2.Boke(); } //ローカルスコープ終了 hoge1.Bpke(); } なんてメソッドがあったとして、内側のスコープは実行時にはなくなる。 メソッド全体のスコープしか残らないってのがスコープ云々の話。
>>149 hoge1.Bpke();
は
hoge1.Boke();
の間違いね。
で、 メソッド() { Hoge hoge = new Hoge(); hoge.Boke(); // いろいろ } ってメソッドがあったとして、hoge変数が示してるHogeインスタンスへの参照は、 最後のhoge.Boke()より後ろでは使われてないので、実行時には、 //いろいろ 部分ではすでにHogeインスタンスはGC対象になってる。 さらにJIT最適化により、Bokeがインライン展開されると、 hogeは暗黙のthis参照としてBokeに渡されなくなるため、 Boke実行中にすでにHogeインスタンスはGC対象になってしまう。 ってことを言ってんだ、どこを勘違いしてるのか言ってみろ。
メソッドから抜けるまでは、hogeはスコープ内にいるはず、に見えるけど、 実際には最後の参照使用以降はもはや消えてるのと同じ、 hoge変数は消滅してるのと同じってこと。 また本来なら、hoge.Boke呼び出しで、hogeは暗黙のthis参照として Bokeに渡されるので、Bokeから戻るまではGC対象にならないが、 JIT最適化によりBoke実行中にすでにGC対象になってしまう場合があるということ。
そこまできつきつのチューンはしてないと思うけど
スコープとか、インライン展開とか、関係の無い話をぐだぐだ言ってるからアホと思われてるんじゃないのか? サンプルのコメント読めばなにがどうなってるかは明白だと思うんだがw
説明してみろ。
なんでHash実行完了前にファイナライザが呼ばれる可能性があるのか。
サンプルのコメントだけでは説明がないだろうが。
だいたいスコープ云々の話を始めたのは俺じゃないわけだが。
おかしなこといってるやつがいるからそれを指摘しただけだよ。
そういう意味では
>>149 は確かに直接は関係ない話だけどね。
>>151 以降は具体的に何が起こるのか説明しただけだ。
アホいうなら関係ないってちゃんと説明してみろ。
ほいよ // The Hash property is slower because it clones an array. When // KeepAlive is not used, the finalizer sometimes runs before // the Hash property value is read.
いや、インラインは関係ないか。 this参照も最後に使われた以降は消滅するわけだから。
158 :
154 :2007/05/24(木) 02:03:40
つまり、あのリンク先の例での肝は ex.Hash; のHash呼び出しだが、 これのコードが、コメントに書かれた動作から推察するに 1.exからHashのアドレス取り出し 2.不要になったexをFinalizationキューに突っ込む 3.Hash処理呼び出し こうなってるってことだろ んで、タイミングによってはHash処理が終わる前にGCが動いてデータが読み出せないことがある、と スコープもインライン展開も関係ないやろ?w
もうええわ
>>158 違うよ。
インスタンスメソッドではexはthis参照として渡されてる。
でも渡された側でexを使ってないから、JITコンパイルされた結果ではすぐにnullに設しなおされるってことだろ。
この時点でGC対象になり、さらにGCも走った場合、Fキューに入ってファイナライズが走る。
>スコープもインライン展開も関係ないやろ?w
動作時にはスコープは意味ないってのがもともとの話だしょ。
まあどうでもいいけど。
インラインは確かに関係ないな。
GC.KeepAlive(ex);でexを使っちゃったら、ガベージされないのって当然じゃね??? 正直かわりに Object dummy = ex; って書いておいても同じじゃないのコレ??? ワカランから詳しく説明きぼん。 あ、試してみればいいのか・・・自分で。
って書いてから気づいた。最適化で除去されるのか。
そう。 GC.KeepAliveは最適化で消されたりしないようになってる。 まあインスタンスメソッド呼び出しとかでもなんでもいいんだけどね。
だから本当に必要なことってめったにない。 間違った(あるいは勘違いした)例は結構あるけど。
案外GC.KeepAlive()の実装って単に public int secret; KeepAlive(Object obj) { if ("".Equals(obj)) secret++; } みたいな感じだったりして。(試してない)
む、ダメだ、Stringキャスト発生しそう・・・ どう作ればエレガントかな???
168 :
デフォルトの名無しさん :2007/05/24(木) 03:42:29
自分のプログラムから、自分のアイコンを変えたり、 デスクトップの壁紙を変えたりって事はできるのですか?
はい。
170 :
デフォルトの名無しさん :2007/05/24(木) 03:52:07
マジですか? 教えてください。 お願いします。
いいえ。
172 :
デフォルトの名無しさん :2007/05/24(木) 04:07:15
いやん!
>>160 でも渡された側でexを使ってないから、
まちがい、hashValueを使用していこう使ってないから、だな。
>>167 そこ、以前はとてつもなく間違ってたけど、
今のはちゃんと理解してないな、レベルになったなw。
書いてておかしいと思うんだけどね。
// GC.KeepAlive メソッドが呼び出されるまで、ガベージ コレクション対象から除外される
GC.KeepAlive(hMutex);
// Mutex を閉じる (正しくは オブジェクトの破棄を保証する を参照)
hMutex.Close();
いやいや、おかしいだろw
わろうたw
すいません。わかりません。 public byte[] Hash { get { return (byte[]) hashValue.Clone(); }} このコードが実行されてる最中に自身のファイナライザーが 呼ばれるかもしれないということですか? thisを最後に使ったあとでGC対象になるってことですが、thisのメンバー であるhashValueはClone()内で参照されているのに消えてしまうんですか? それともこれはbyte[]だからこうなるという話ですか?
>>176 public byte[] Hash { get { byte[] ret = (byte[]) hashValue.Clone(); ret[2] = hashValue[2]; return ret; }}
または
public byte[] Hash { get { byte[] ret = (byte[]) hashValue.Clone(); GC.KeepAlive(this); return ret; }}
といったふうにClone後にthisへアクセスすれば現象は発生しない。
これは予想なんだけどArray.Cloneが特別なのではないかと思える。
hashValueからClone先のArrayを作成してコピーする過程がアンマネージ的な手法で動作していて、
そこでthisが使われているとGCが判定できていないのではないだろうか。
ちなみに csc /debug でコンパイルすると現象は起きなくなる。
これはJITでの最適化がOFFとなり、参照にnullを代入などしない限り
ファイナライズやGCはスタックの回収時以降となるため。
もし
>>177 の仮説があってればMSDNのサンプルとしては特殊ケース過ぎる。
先に出ているMutexとKeepAliveの例の方がサンプルとしてベターだと思う。
>>177 なるほど、そう解釈すればなっとくいきます。
ちがうよ。 hashValueはGC対象じゃないよ。 hashValueが解放されるのが原因じゃなくて、 exの参照先が解放される際に、ファイナライズで消してしまうから。 原因はあくまでexの参照先の方。
おまいら、変な想像で書きすぎだ
>>177 仮説が崩れた。このケースでも発生しとる。
public byte[] Hash { get {
int length = hashValue.Length;
byte[] x = new byte[length];
for (int i=0; i<length; i++) x[i] = hashValue[i];
// *1
return x;
}}
*1 のところにGC.KeepAlive(this)やらx[5] = nValue を入れたら起きないが、
x[5] = hashValue[5] だと発生してる。 頭痛いなこれ。
欠陥言語だな
デストラクタで明示的に配列を消してるからあかんじゃないのか
そうすると コンストラクタ実行中にファイナライザーが呼ばれることもあり得る? 例えその結果を代入するコードを書いても。
ふらっとの新スレがたっていないようなのでこちらにおじゃましました。 複数のボタンのクリックで同じ処理をする場合に、VBですと Handles を使って Private Sub ButtonX_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click MessageBox.Show("こんにちは") End Sub 下記のように書けますが、C#では同じようなことはできますでしょうか? ぜひよろしくお願いします。
そもそもファイナライズなんてめったに書かんから 頭痛い影響なんてめったに発生しない。 アンマネージのラッパー使うときは起こりやすいが、 大抵using使えるからそれもめったに問題にはならない。
>>183 とりあえずよほどの自信がない限り
ファイナライザ中でマネージオブジェクトの操作なんてしないのが得策かと。
頭痛いのはそういうことしちゃう人。
return (byte[])hashValue.Clone();
こうやって書くからthis云々に思えるけど、
下のような意味だと思えば、フィールドにアクセスした直後からすでに
thisが不要になっていることが分かる。
byte[] tmp = this.hashValue; // これ以降thisは不要
// ここでfinalizerが実行されてもおかしくない
byte[] tmp2 = (byte[]) hashValue.Clone();
// returnにもthisは不要
return tmp2;
>>185 正解。
192 :
190 :2007/05/24(木) 12:39:56
ごめんコードまちがえた。 正しくはこう。 byte[] tmp = this.hashValue; // これ以降thisは不要 // ここでfinalizerが実行されてもおかしくない byte[] tmp2 = (byte[]) tmp.Clone(); // returnにもthisは不要 return tmp2;
そういう問題なの? ファイナライザが実行されたってことはもうそのメモリにはアクセス しちゃいけないってことじゃないの? 例外が起きてもおかしくないみたいな。
>>189 レスいただきどうもありがとうございます。
ふらっとのスレは全角の#でも検索するべきでした。
それから、教えていただいた方法でできました、ありがとうございました。
助かりました。
>>193 ファイナライザが実行されても、
メソッド自身やメソッド実行中のスタック変数のメモリ領域まで解放されるわけじゃないよ。
確かにC++でdelete this;やったことあるような人でないとわかりにくいかもね。
まあ一般には「自身がなければファイナライザを自分で書くな」でいいと思う。
>>195 この例だと、hashValueってのはマネージヒープ上にあるんじゃないの?
>>196 もしかしてあるクラスのインスタンスが解放されたら、
そのタイミングで全てのフィールドも解放されると思ってる?
そんなことはないんだけど。
欠陥ちゃ欠陥だが、CLRがパフォーマンスを理由にあえてそうなってんだから仕方がない。
マネージコードの範囲内ならお行儀良くしていれば良いだけだし、
マネージラッパー書くならSafeHandle(これも万能には程遠いが)使いましょう、と。
>>196 そしてthisはそのメモリを参照しているだけ。
TextBoxに入力されるキーを見て、 それが特定のキーならデータがLinesプロパティに書き込まれるのを阻止したいんですけど、 どうすればいいかわかりません。 誰かご教授お願いします。
GCの仕様を知らない馬鹿がいるスレはここですか?
いるわけないだろそんなバカ
どなたか
>>115 に関して分かる方いたらお願いします。
いるわけないだろそんなバカ
>>204 KeyPressで捕らえたらe.Handledをtrueにすると反映を阻止できるんですね。
ありがとうございました。
は?
リンク先くらい見ろよ
209 :
デフォルトの名無しさん :2007/05/25(金) 00:21:24
もしかしてREG_NONEってRegistryKeyクラス使って読めないの???
レスthx ぶっちゃけ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer の IconUnderline(REG_NONE)を読みたいんですよね…… どうも無理っぽいんでAPI使うしかないすかね? またDllImportが増える。。
調べたらREG_NONEのときはデータを無理やり文字列(StringBuilder)にして読もうとするらしい。。 素直にbyte[]で返してくれればいいのに プンプン
ファイナライザーでAssertに引っかかっても、別スレッドのせいか ダイアログが消えてしまいます。どうすればAssertの内容を確認できますか?
↑書き忘れました。アプリ終了時の話です。
private void listBox1_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.All; } private void listBox1_DragDrop(object sender, DragEventArgs e) { this.contextMenuStrip1.Show(MousePosition.X, MousePosition.Y); } ListBoxにD&Dしたときにコンテキストメニューを表示すると タスクバーが表示するのですが、表示しないように出来ないでしょうか?
DataGridView の DataSourece に DataTable を割り当てている状態で DataTable のセルの値を一度に多数書き換えているんですが 値が書き換わるたびにDataGridViewがソートをしてしまうので非常に重くなってしまいます。 とりあえず、書き換える前にダミーとして空の DataTable を DataSource に割り当てて 書き換えが全て終わった後に、元の DataTable に割り当てなおすようにしてます。 これだと動作は軽くなるんですが、テーブルが一瞬空になってしまうので非常にかっこわるいのです。 DataSource を割り当てたまま DataGridView を一時的に更新停止させる方法はあるのでしょうか?
>>215 以前間違えて別スレッドからcontextMenuStripを表示したとき
似たようなことになったが
ListBoxを継承して OnPaintメソッドをoverrideした カスタムコントロールを作ったんだけどイベントが発生しないです。 なんで?
くだすれでも恥ずかしくて聞けないような質問だなあ。。。 もっとも218にはそれが恥ずかしい質問だ、という認識すらないだろうけど
ListBox は描画をシステムに丸投げしてるから。 ちゃんと ListBox.Paint にこのイベントは使われないって書かれてる。
いい加減にしろ!!
ThreadPoolで実行されているスレッドを全て強制終了させるにはどうしたらよいのでしょうか?
Environment.Exit まあThreadPool以外も強制終了されるけどなw
↑そういった解答は出ると思ってました。 自分でスレッド管理します。
ところでどういう場面で必要になるの?
いい加減にしたいときだろ
素朴な質問だけど、private指定したプロパティって邪道? 要はクラス内部で使うGet,Setメソッドを変数風に定義しよう としているんだけど。素直にメソッド使っとけって感じ?
何の問題もない。
多用はしないがときどき使うな
全く邪道ではない。 ゲット セットのほうが邪道。
C#3.0で自動プロパティが使えるようになったら使いまくるかも
c#にはなんで(インデクサ以外の)引数付きプロパティがないんだろう
インデクサで実現できるから
インデクサが付いたインターフェイスを内部クラスで実装すればいいだろ
意味がわからない
それは頭が悪いだけだろ
神聖なCoBoLの血を引くDelphiを、そしてLispへと融合しつつあるC#を作ったAnders Hejlsbergは神。
なんじゃそりゃ
いや、Delphiはそんな血は引いてないからw
>>233 はVisual C++の
property String^ SampleProperty[int]
みたいなことが何でC#に無いかって訊いてるんだろ。
>>236 は「最終的に欲しい型をインデクサで返す中間クラスを定義して
それを返すプロパティにすればいい」って言っている。
何で無いのかと訊かれれば、言語設計者の気まぐれじゃね?
COBOLの血を引いてるなんて言ったらボコるぞ!
引数付きプロパティをVBで組んで一度CLRにコンパイルしてから C#で逆コンパイルするとどんなコードになるんだろう
245 :
228 :2007/05/26(土) 23:32:33
みなさん、レスどうもです。privateでの使い方って聞いた事なかったんで、 文法的にNGなのかと思っていたんですが、試しに書いてみたらすんなり 通ったんだけど、清く正しい書き方かどうか不安になったもんで。
サポートされていないものを適切に逆コンパイルできるわけがなかろう
>>245 VC#2005に付いてるスクリーンセーバスタートキットで
思いっきり使われてた記憶がある
>>246 ILになったものをC#から参照するときどう見えるかは気になるな。
試してないけど
get_プロパティ名(引数)
というメソッドになるんじゃない?
DLLにしてC#で使おうとするとどうなるんだろ 「この言語ではサポートされていません」みたいなエラーが出るのかな
デフォルトプロパティならC#のインデクサと同じ構文でアクセスできるけど、 その他はアクセサメソッドを直に使うことになるね。
>>242 >何で無いのかと訊かれれば、言語設計者の気まぐれじゃね?
気まぐれでは何なので予想してみる。
構文解析上うざいから?まぁなんにしろ評価してバランスがあわん
かったんだろう。
言語設計者は間違いなく、俺たちより優秀な奴らがレビューして 決めているから、あきらめて使うしかないよ。 バージョン変わると新しくできる可能性があるかもれないが。
>>248 それで正解。
VB で xx.NameProp(1) = "nnnnn"
C#だと xx.set_NameProp(1, "nnnnn");
へジの趣味だろ
バカなおまいらのためにヘジが気を使ってくれたというのに、おまいらときたら・・・ 親の心子知らずとはこのことですな。
indexが予約語になったらお前らのソースがコンパイルできなくなるから。
?
〜コレクションで実現できるからじゃないかな?
そのコレクションを作るのが手間だというのは問題でそ
シンタックスとしても仕組みとしても簡単に実現できたとして、
プロパティに引数なんて意味的に変だと思います。
"NameProp" 自体に引数1を渡したいなら「それってメソッドでは」ですし、
NamePropで取得するものに引数1を渡したいなら
>>234 C#のインデクサは「そのオブジェクトそのものに引数を渡したい」という
意味が明確に出ていて美しいと思います。
名前付きインデクサの話、過去にも何度か出てたな。 どういう結論だっけ、ちょっとうろ覚え。 とりあえず、構文的には、インデクサ自体が RetType this[ArgType x] なんだから、this のところを名前に変えるだけで何の苦労もないはず。 過去に出てた話で、俺の覚えてるのだと、 「コレクションを返すプロパティ」と 名前付きインデクサの区別付かないのを嫌ったんじゃないかって。 ヘジが名前付きインデクサなんかよりも イテレータ構文の方に夢中だったってのもあると思う。 (まあ、イテレータの戻り値は IEnamerable であって、コレクションじゃないけど。)
2.0のBackgroundWorkerでちょっとお尋ねしたいんですが、Windowsフォームに BackgroundWorker開始用のボタン button1、キャンセル用のボタン button2、出力用のテキストボックス textbox1を 作成し、簡単なコードをいれて実行したのですがループの中に System.Threading.Thread.Sleep(20); といれておかないとフォームも正しく描画されず、また、キャンセルボタンを押してもスレッドが停止されないのですが これはこういう仕様なのでしょうか。それとも、実装の仕方を間違えているのでしょうか。 コードは下記のとおりになります: private void button1_Click(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } private void button2_Click(object sender, EventArgs e) { backgroundWorker1.CancelAsync(); }
続き private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { for(int i = 0; i < 23877; i++) { if(this.backgroundWorker1.CancellationPending) { e.Cancel = true; return; } //System.Threading.Thread.Sleep(20); ←最低でも20msSleepしないと描画されなかったり、キャンセルできなかったり backgroundWorker1.ReportProgress(i, i); } } private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { textbox1.AppendText("line: " + e.UserState.ToString()); }
続き2 private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if(e.Cancelled) { textbox1.AppendText("Cancelled!"); } else { textbox1.AppendText("Done!"); } }
生兵法はケガのもと、ということだろう。 なんで質問する前に自分で調べて考えようとしないのかな。 プログラマとして終わってるとおもうよそういう性格。
くだらねぇ煽り入れてる暇があるなら答えてやりな。
死んでもイヤだね。 でも別にお前さんが答えることまでは止めないよ。
以下、オマエモナーループ
>>265 調べてもわからないから聞いているんですが・・・。
DOBONさんや、MSDNでは
重い処理 = System.Threading.Thread.Sleep(10000);
という扱いになっているのでなんとも・・・。
>>262 MSDNにあるサンプルと見比べてみ。
それでもわかんなかったら、相当に注意力が欠如してる。
>>269 本当に調べてわからないならプログラミングなんてやらない方が自分のためだと思う。
いや本当に煽りとか悪意とか抜きで、むしろ善意で言ってるつもりだけど。
>>272 いるいる、おまえみたいなやつ。
さっさと答えいえばいいのに関係ないことねちねちいう馬鹿w
>>273 せめて自分の言葉を自分自身に向けたら?w
脳の不自由なお方だねえ。
>>274 はぁ? おまえ小学校からやりなおしたほうがいいぞw
荒れてますね
>>275 何も学ばずに再度取り組んでも絶対に同じこと。
君はそもそもスレッドの概念がまったく理解できてないんだろ。
せめて@ITやCodeZineの解説に書いてあることぐらい理解してからでなきゃ
何やったって意味ないね。
BackgroundWorkerってのは(個人的には存在意義が疑問だが)
スレッドを簡単に使うためのものであってスレッドを理解してない人間でも
スレッドを使えるようにするものではないんだよ。
>>278 荒れるだけだし勿体つけずに教えてやれよ。
お前が教えてやれよw
つまりここに分かる奴はいないわけだw
そういうことになってもいいなw
それ、.NETのバグだよ
自分じゃ教えられないから他人に教えてやれよって怒ってたのかよw
できない奴のパターン 自分では分からない質問が投稿されるが、かっこよく答えてみたいと思う。 ↓ 「自分で調べろ」と一人前ぶっていってみる。 ↓ 「調べてもわからない」から教えてくださいと返ってきていい気になる。 ↓ 「サンプルと比べろ」とさもわかったかのように言って見るも、自分も必死に探す。 ↓ 自分が挫折しかけたので「わからないなら諦めろ」と煽ってみる。 ↓ サンプルを張られ、みてみるがサンプルすら理解できない。 ↓ 「理解してないなら意味がない」といって見る。 ↓ まわりに「おまえ本当はわかってないだろ」と突っ込まれる ← いまここ
>>262 のコードはなんら間違ってないが、描画は時間のかかる処理ってことを忘れてないか。
おまえさんのコードだとBackgroundWorkerは黙々と処理をこなしていくが、backgroundWorker1_ProgressChangedの
処理が追いつかずに、処理待ち状態(キューにスタックされた状態)になる。
つまり、スタックされた描画処理のほうにマシンパワーをとられてしまいスレッドの意味がなくなってしまうというわけ。
その描画に使われる時間が
>>262 のマシンだと20ミリ秒なんだろう。
>>278 は見当違いもいいところだなw ワロスw
スレッドの概念を学んでから氏んだほうがいいw
>>287 適当なこと言うなよ。
>>262 のコードは、単にシンタックスレベルでの誤りがないというだけ。
意味論的には、こんなコードならBackgroundWorker(というかスレッド)を使う意味がない。
要はスレッドが何か分かっていない、ということだ。
スレッドが何か分からずにどうしてそれを使おうと思うのかは不可解な点だが。
>>289 おまえBackgroundWorkerわかってる?
278 289 涙目 そして必死の一言↓
ど、ど、どうていちゃうわ!
ワロス
またいつものヤツが暴れてるかよ…
>>289 ん?
では具体的にどこが間違っているか指摘してみ。
できないなら黙れ。
ねぇ、なんでこの時期に湧く訳?
抽象論ではぐらかそうとしてるな。久々にワロタ。
注:私の有意義な発言に対し、自分の理解不足を棚に上げ煽り、1行レス で返す方が多いようですが、そのような方はスレの皆様を混乱させるだけでなく スレの雰囲気を崩しかねないのでお黙り下さい。 また質問者は回答者に知識を披露する場を与える貴重な存在なので、 質問者を見下した回答、あまりにも儀礼を欠いた回答も厳重に禁止いたします。 忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、 その辺ご承知下さい。なお、当方が質問に対して有意義な答えであると 判断した方には評価いたしますので各自よく調べ、よく考え正確な回答をするように。
お っ け ー ま か せ な
これはひどいwwwww
方法論的にはProgressChangedの処理が終わるまで MonitorとかでDoWorkを待機させればいいわけ?
>>296 >>289 で必要十分だと思うが敢えて言葉を替えるなら、
これでは実質的に(バックグラウンドではなく)UIスレッドで処理を実行しているのと
何も変わらない、ということ。
まあ、
>>289 に納得できないのなら言葉を替えようが同じことだろうけど
>>304 もしかして本気でBackgroundWorkerわかってない?
結局、DoWorkで時間がかかる処理をやってないから意味がない って言ってるだけだろ なんでわざわざややこしくする
念のためもう少し補足すると
>>262 のコードなら、
UIスレッドでビジーループまわしてApplication.DoEventsしてるのと等価になってしまうね。
>>306 言いたいことは分かるけど、それが問題の本質じゃないだろう。
より正確に、頻繁にControl.BeginInvokeしてるのと同じだから問題だ、
と言いたいのなら同意するよ。
で、どうすれば・・?
このスレでは「どうすればいい」という具体的な答えは書き込めません。 全員知ったかなのでえらそーなことを回りくどく書くだけです。
289で必要十分だなんて、そっちのほうが心配になりました。
どうにもならないとは言ってない
>>263 の //System.Threading.Thread.Sleep(20);
のタイミングで「時間のかかる処理」を実行すればいいだけ
>>287 が,0から23877までの数字を表示することを「時間のかかる処理」と
認識してるならそれは間違い。
で、どうすれば・・?
>>315 わかってないね、あんたもw
そこで「時間のかかる処理」を実行しても、Sleepをいれなきゃ描画されないの。
ためしにやってみ。
で、どうすれば・・・?
Sleepいれるか、頻繁に描画するのやめればいい
>>263 の23877が「兄さんバナナ」というのが問題。
アッー!
もうスルーしてくれよ。 ウザいよあいつ。
>>215 です。
>>217 SharpDevelop1.1と.NET Framework1.1を入れて
Context Menu StripじゃなくContext Menuで同じ事をすると
タスクバーは表示されませんでした。
どうやらContext Menu Stripのバグのようです。
ReportProgressって同期?非同期?どっちだっけ? 普通に考えたら非同期だとは思うけど もし普通に思いつくような実装なら、ペンディングされた分は省かれるだろうしな… まあとりあえずレポート上げるのはせめて100ms程度は間隔空くぐらいのが無難だろ。 もし同期だったりペンディングされてる分も省かれないんなら、(そんな実装ではないとは思うが) レポート間隔をきちんと空けないと、スレッドの意味なしになったり処理と描画が破綻しかねない。
あぁもちろん例え非同期の実装だとしてもある程度空けるべきなのは同じだが
>>287 で答えで正解だろ。
ReportProgressは非同期だろうが、描画であぼんしてるとおもわれ。
ふらっと向きの質問かもしれないけど ReportProgress内でUIスレッドで処理されるのものが多い場合、 処理しきれないメッセージは破棄されるの? Application.DoEventsするとスタックオーバーフローしたりするじゃないですか
ReportProgressはどうも単にスレッドの切り替えでProgressChangedを発火するだけっぽいから どんどんたまっていってしまいそうだな。 単純に描画がまったく間に合わなくなる。 非同期ではあるがペンディングになった分は省かれたりしない。
あぼんとかなんとか、大まかというかガサツな思考だなそれ。 だから違うって何度も言ってるだろうに バックグラウンドの処理が所期のパフォーマンスを上げない、ということを 問題にしているのであればそういう回答でもいいかもしれないが、 はて、262はそう言ってるのかえ?w 262の「問題」とは、別スレッドでやってるバックグラウンドの処理にSleepをかまさないと UIのレスポンスが停止する、というものでしょうが。
ReportPrrogressは十分に間隔をあけて呼べ。 ProgressChangedでの描画ではあまり重いことはするな。 以上。
>>329 何いってんのかよくわからんが、
描画処理がたまって操作を受けつけるまで時間がかかってしまうってこったろ。
つまりキャンセルとかもすぐにはできない、あたりまえ。
ってか
>>262 だとあっという間に全部ReportProgressを実行しきって処理も完了してしまう。
そのあと、一生懸命たまった分の描画を行っている。
キャンセルする暇なんかねーよ、当たり前。
あ、何万回もやってんだっけか、それならあっという間には終わらんかもしれんが、 まあ起こってることはおんなじようなもんだ。
>>327 その場合はたぶんスレッドプールにキューされるまで待たされるんだろうね。
確認したわけじゃないが。
ProgressChangedの処理のためのメッセージがあっという間に大量にたまってしまうから、 キャンセルなんて押してもずっと順番待ちの後ろになってしまうってことね。 すでに全部ReportProgressし終わってたら、もうキャンセルもできないわな。
>>329 おまえもう出てこなくていいよw
頭悪すぎる
ってか
>>329 誰に言ってんだ?ってかどれに言ってんだ?
クロールとかスキャンとかしてる最中に そのファイルパスを表示したいじゃないですか。 どうせどんな動体視力の持ち主でも見えないけど。 label1.Text = "C:\hoge\hoge"; とか lable2.Text = iCounter.ToString(); とかやるじゃないですか。 プログレスバーも表示したいじゃないですか。 progressBar11.Increment(); 非力なマシンだったら破綻するわけですか?
>>336 329の直近で「あぼん」というワードが出てくるスレ。
というか、本気で聞いているなら・・・いや何でもないw
非力じゃなくても破綻する(間隔が短すぎたらの話)。 直接描画したら多少はいけるかもね。 通常の操作で描画させる限り、ある程度間隔をあけないと破綻する。
>>337 ああいうのはそもそも「ハングアップせずにちゃんと動いてるよ」という
ポーズ以上のものではないんだよ。
だから当然(普通は)馬鹿正直に全部表示したりしないよ。
俺はそもそもBackgroundWorkerなんて初心者に中途半端に媚びた「いらない子」
だと思ってるんで余計にそうおもうんだけど、こういう処理はスレッドをクラスで
ラップしてUIスレッド側からタイマイベントか何かでプロパティ経由で
状態をアクセスするようにした方がむしろ直観的なように思う。
それをちゃんとできないのがいっぱいいるから、 簡単にできるようにBackgroundWorkerつけたんだろ。 簡単という意味では悪いもんではないと思うが。 まあそれでも使いこなせないのはいっぱいいそうだな。 下手にラップしてるおかげで、余計になにも考えずに使って 破綻する原因にはなってるかもしれん
>>323 タスクバーが表示される、ってのは意味不明でしかない。
タスクバーはデフォルトでは常に表示されてるものじゃないのか。
なにこの気持ち悪いレスの嵐w 初心者が質問したら「プログラミングやめろ」とか次元の違う答えを返し、 そもそも質問の本質とは異なるところで「これは重い処理ではない」と揚げ足取りをし、 原因がわかったところで「だからこういう機能はいらないのに」とか意味不明なことを語りだし さらには解決したことをねちねちと「そこが問題ではない」と穿り返す。
>>343 ContextMenuStripってのは普通のウィンドウだから
なんかの拍子でたまにタスクバーにボタンが表示されたりするんだよ。
特殊なことしないとそうならないけど。
周りの空気読めてないプログラマっておおいからな。 むしろ、読めるほうが少ないw
草生やしてるのは同一人物?
試しても異常な点は見られなかったわけだが。
異常な点は見つからなかったとかえらそうだな。 眼科いけよ。
今夜はこのスレですか。いつもお疲れ様です
352 :
デフォルトの名無しさん :2007/05/27(日) 21:49:18
ここの平均年齢って何歳なんだろうな
小学三年生です。
単純に平均とっても意味なさそう
それでは分散もお願いします><
いや、ここは個人の偏差値を言ってもらおうか
じゃあ俺65くらいがいい
俺は34で
けんかするのやめろよ。 頼むからこういうスレくらいはマターリ進行しようぜ。
質問スレは荒れる
荒れるっていうか、馬鹿ばっかだし。 まさに 344 名前:デフォルトの名無しさん [sage] 投稿日:2007/05/27(日) 21:33:44 なにこの気持ち悪いレスの嵐w 初心者が質問したら「プログラミングやめろ」とか次元の違う答えを返し、 そもそも質問の本質とは異なるところで「これは重い処理ではない」と揚げ足取りをし、 原因がわかったところで「だからこういう機能はいらないのに」とか意味不明なことを語りだし さらには解決したことをねちねちと「そこが問題ではない」と穿り返す。
質問者が低姿勢で逆切れしないかぎり、そうそう荒れないんだけどな。 上級者きどり回答者どうしがケンカを始めるときもあるが。
はいはいまんこまんこ
荒れる荒れないの話題でスレを荒らさないでください><
何かあるとすぐプログラマ止めろとか素っ頓狂なことを抜かす 約一名の人がいなくなれば荒れないと思います><;
質問者が高飛車で逆切れしないかぎり
ツールチップをプログラマ側のタイミングで表示するにはどうすればいいの?
プログラマ側のタイミング、とは?
あっちこっちのスレで意味不明の質問ばかりしてる奴って同一人物?
少なくとも同一レベルの頭脳を持つ人物
ひょっとして369 = 371?
だとしたらせっかく善意で聞いてるのに煽りか何かだと思ったのかな?w
>>369 のような文章で自分の疑問が伝わると本気で思っているのなら
(まあ思っているから、かくのような粗末な文章を書くのだろうが)
ちょっと知的レベルに問題あるぞ。
どいつもこいつも意味不明。 誰一人、読む人間のことを考えて文章を書いちゃいない。 俺もだけど。
>>369 ToolTipのメンバをMSDNでよく眺めてみな。特にメソッド
ツールチップのような極めて機能が限定されているもので タイミングといえば「表示」しかないような気がするのだが… オレがエスパーなのか?
質問者に意味不明なところを確認しても答えない質問者はスルーしたほうがいい。
>>369 程度の意味が汲めないようなら外に出るのやめた方が良いと思うよ。
Showメソッドのオーバーロードを調べろ の一行で済むのにね
ListViewで簡易エクスプローラを作成したいんですが、ファイルの種類の名称は どのように取得すればよいか教えてください>< 「テキストファイル」とか「ファイルフォルダ」とか
>>379 ツーツチップが「何か」を知っていて、かつ実際に使ったことがあれば、
そんなに単純には考えないはずだと俺は思うけどね。
>>382 でたw 俺様ルール。
プログラマによくいるんだよね。俺の常識=世間の常識とかおもってる馬鹿。
それにおまえがどう思ってるとかいちいち書かずに、渋らずに質問に答えりゃいいのに。
質問したやつが何をもとめているかを考えてみろよ。
おまえが思ってることを知りたかったら「
>>382 の思いを語れ」ってレスつくだろw
>>344 を100回読んで半年ROMれや
384 :
デフォルトの名無しさん :2007/05/29(火) 10:49:09
バカさらしあげ
↑馬鹿が自分で「さらしあげ」^^ ↓悔しさの一言
C#でマンコを開発したいのですがどうすればいいですか?
そんな事より俺のアナルにコショウ瓶をぶち込んでくれないか?
>>386 Manko
{
System.Console.Write("マンコ完成");
}
public class Manko {
391 :
デフォルトの名無しさん :2007/05/29(火) 18:16:40
ゆとり世代のバカっぷりは半端じゃないな。
ゆとり世代とか言ってるが、ゆとり教育っていうのは (本格的に始まったのは中曽根内閣以降だが)70年代から始まってることを 知らないお前さんも十分馬鹿だろうw まあまず間違いなく、その意味ではお前さんだって「ゆとり世代」なんだよw 知らぬは本人ばかりなり。 いや勘違いしてもらっては困るが、383以降の愚劣なレスを書いてる人間を 肯定しているわけではないからね。
ゆとり教育=ゆとり世代ではないですよ。
そりゃあそうだろう。 要するに「ゆとり世代」みたいな言葉を好んで使う人間のメンタルというのは 「自分以外はみんな馬鹿」だからな。 いや、厳密にはちょっと違う。 こうい人間のメンタルをより厳密に言えば、『「自分以外はみんな馬鹿」だと思いたい』だな
解釈が特殊すぎて着いていけません。
>「自分以外はみんな馬鹿」 そうじゃなくて「お前そんな事も知らないのかよ」だよ。
>>392 =
>>394 でたw 俺様ルール。
プログラマによくいるんだよね。俺の常識=世間の常識とかおもってる馬鹿。
それにおまえがどう思ってるとかいちいち書かずに、渋らずに質問に答えりゃいいのに。
質問したやつが何をもとめているかを考えてみろよ。
おまえが思ってることを知りたかったら「
>>394 の思いを語れ」ってレスつくだろw
>>344 を100回読んで半年ROMれや
意味がわからない。
というか、
>>397 は寂しい奴が構ってほしさネタでやってるとかではなく
どうも本格的に頭おかしい気がする。
なるほど、俺様ルールが悪いんだと仮定しよう。(俺は認めないがね)
しかし、「俺様ルール」というのはまさに397の書いているようなことなはずだが、
そんな簡単な理屈も分からないのだろうか。
というか、質問した奴って誰なんだろう?w
この話どーでもよくね?
うん。
せめてC#語でやろうぜ
まーた騒いでるのかw
404 :
デフォルトの名無しさん :2007/05/29(火) 22:03:36
>>386 一瞬、コンマを空目しちゃったんだろうと勘違いして
随分、2ちゃんに毒されちまったなぁとか思っちまったじゃねぇか。
>>387-390 をみてふと思ったんだが
manko.Insert(chinko);と
chinko.Insert(manko);のどっちが自然?
前者
前者なら コンテナ.Insert(要素); と同じ形になる。
>>405 両方とも不自然。
He.Insert(凸,凹)
>>408 それじゃHeに属さない凸を指定できてしまうだろw
God.Connect(凸,凹);
やだよ
それは偏見だ
とりあえずおまえは消えろ、な。 空気よめてなさすぎなんだよw 友達いねーだろ? いい加減気付けよ ↓
知ってるよん
やっべ!こいつまじ臭い↑ なにこの体臭。おまえ風呂はいってんのか? 2chで必死になってる暇があったら日光浴して殺菌しろよ。 脳みそだけじゃなく全体的に腐ってんぞ
>>421 ,422
いい加減やめたら。
ロムってたけどうざくなってきた。
取り敢えず どれが自分のレスか書いたら?
その中で自分の代表作のレスあげてほしいな。
もちろん
現在Visual Studio 2005 C#にてプログラムを作成しているのですが、スレッドからのフォームの作成は不可能なのでしょうか? 下記のような感じでプログラムを作ったのですが、子フォームの枠が出たままフリーズしてしまいます。どうしてもスレッドからフォームを新規作成したいのですが、何かやり口はあるのでしょうか? private void MainForm_Load(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } // DoWorkイベントハンドラ private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { while (m_Done) { // ここで、なんらかの処理をして条件に合えばフォームを作成 if( .....) { Form_Child fc = new Form_Child(); fc.show(); } } }
どうしてもって言われても必然性感じられんし。 なんでメインスレッドで表示させちゃいかんの?
具体的には、チャットのプログラムを作成してまして、DoWorkのメソッド内でメッセージを常時待ち受けて、会話開始のメッセージがきたらチャットウィンドウを新規作成するようにしたいのです・・
ListBoxに表示している項目の行区切りに 線を描画したいです。 Paintイベント無いみたいだし、なんか方法ない?
if(.....)のスコープ抜けたらfcへの参照が消えるけど? たしかに必然性が感じられない そのフォームの扱いに困るし メインスレッドに通知してそっちで作った方がいいっしょ LimeChatとやらのモドキを作ってる方ですか?
>>428 チャットウィンドウの作成をメインスレッドに委託すればOK
delegate void DelegateShowFormChat();
class Chat
{
Form form;
public Chat(Form form)
{
this.form = form;
Thread t = new Thread(Run);
t.Start();
}
void Run()
{
DelegateShowFormChat dele = new DelegateShowFormChat(ShowFormChat);
form.Invoke(dele); // メインスレッドに委託
}
void ShowFormChat()
{
FormChat formChat = new FormChat();
formChat.Show();
}
}
上手いやり方かどうかはわからないけど
これをメインフォームから
Chat chat = new Chat(this);
で呼び出せば別スレッドからメインスレッドにウィンドウを作らせることが可能
TabControl.ShowToolTips = true; とした場合、ツールチップの表示時間とかは細かく設定できないんでしょうか?
>>432 ありがとうございます。ちょっと試してみます。
435 :
デフォルトの名無しさん :2007/05/30(水) 10:52:33
WeakReference(object, true) がどういう動作をするのか教えてください。 MSDNにそれらしい記述はあるのですが、何を書いてあるのかさっぱりです。 >WeakReference オブジェクトは、終了後にターゲットへの参照を維持するかどうか、 >つまり、弱い参照によりターゲットの再生を追跡するかどうかを指定できます。 >再生を追跡しない弱い参照は、"短い弱い参照" と呼ばれます。 >再生を追跡する弱い参照は、"長い弱い参照" と呼ばれます。
分からないなら使わないほうがいい それに使う場面なんて通常はないし
あるクラスを指しているTypeがあるとしてそのクラスがあるInterfaceを継承しているか調べたいんですが、エレガントな方法ありますか? それらしいメソッド見つからなくてIsSubClassOf試してみたけど撃沈・・・orz
ファイナライザで復活したオブジェクトをさらに追跡すりかどうか 普通は使う必要はない
>>437 オブジェクトじゃなくTypeとinterfaceを調べるなら、スマートな方法はなさそうです。
Type#GetInterfaces使うしかないっかな。
>>438 普通じゃないケースというのは具体的にどういう時使うのだろう?
>>440 話題になってるのは単純な弱参照のことじゃなくて長い弱参照。
GCの対象になってファイナライザが動いて、それでいてメモリがまだ回収されてないときに
強参照が回復するとオブジェクトが復活するってことだよな。
使い道が不明だなこりゃ。
>>437 typeof(ISample).IsAssignableFrom(type)は?
MAKEINTRESOURCEマクロをC#で使用するにはどうすればいいのでしょうか? P/Invokeに使用する構造体のLPTStrなフィールドに数値を入れるのに必要です。 とりあえずはそのフィールドをintにすれば動くのですが。
MAKEINTRESOURCEって単にcharポインタへのキャストでないの?
wcharの場合もあるのか・・・
>P/Invokeに使用する構造体P/Invokeに使用する構造体 どれのこと? c#でIDなんか使わないと思うが?
448 :
444 :2007/05/30(水) 20:31:43
CMINVOKECOMMANDINFOです。 IContextMenu.QueryContextMenuで得たメニューをTrackPopupMenuで表示して 返ってきたコマンドIDをCMINVOKECOMMANDINFO.Verbに入れて IContextMenu.InvokeCommandするのに必要です。 Verbフィールドは [MarshalAs(UnmanagedType.LPTStr)] public string Verb; 今のところこれをintにしている…。
high-order word が0なら数字と解釈されるんでそ>MAKEINTRESOURCE コマンドID入れるならIntPtrでOKじゃない? 昔書いたC#のソースだと TrackPopupMenuの戻り値から1引いて(indexになおす?) 0xFFFFとANDとってた
#define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i))) これだけだから上手いことやったら?
451 :
444 :2007/05/30(水) 21:42:49
public static string MakeIntResource(int n){ return Encoding.Default.GetString((BitConverter.GetBytes(n))); } これでいけそうな気がしたが上手く動かないな…。 変換後のバイト列は確かに同じなんだけど…。 マーシャリングが上手くいってないのか?
452 :
444 :2007/05/30(水) 21:44:25
ああ、リロードすべきだった。 もうちょっと悩んでみる。 IntPtrでも用は足りるんだけど、スマートじゃないかなと思った…。
基本的な勘違いがありますよ… 文字とポインタ。
>IntPtrでも用は足りるんだけど、スマートじゃない 何でそう思うの?
455 :
444 :2007/05/30(水) 21:59:36
TrackPopupMenuの返り値から-1するのは
QueryPopupMenuのidCmdFirst引数の分を引くからだと思う。
>>453 ああ、そうか、おぼろげながら分かってきた(ような)。
変換した文字列へのポインタを渡しちゃってるわけか。
456 :
444 :2007/05/30(水) 22:11:34
他の構造体だとLPTStrが出てきたら脊椎反射的に MarshalAs(ryしてたから変に感じたのかもしれない…。 この場合マーシャリングするとアレだと分かったのでIntPtrでいきます。
>>437 type.FindTypes(Module.FilterTypeName, "InterfaceName")
もしくは
type.FindTypes(object.ReferenceEquals, interfaceType);
てな感じとか
IntPtrなのはポインタだからというよりLPだから intだとアウト
っとと >type.FindTypes(object.ReferenceEquals, interfaceType); type.FindTypes(object.Equals, interfaceType); の方が普通だな。
じゃねー FindTypesじゃなくてFindInterfacesの間違い。
>>458 試したのか?
多分、構造体の定義変えれば全く問題ないはず。
static bool IsImplemented(Type @interface, Type @class) { return Array.IndexOf(@class.GetInterfaces(), @interface) >= 0; }
struct fooのstatic foo operator+(foo,foo)を定義して、 foo x=new foo(),y=new foo(); x=x+y; としても、xにoperator+ x,yの演算結果は入るんですが、どうも変です。 デバッガで追跡してみると、 x=x+y;//ここまでは大丈夫 foobar();//ここでxの内容が何故か元に戻る operator+内部では、新しいインスタンスを生成し(new foo())、それに演算結果を格納、 そのインスタンスを返しています。 C#はGCが付いていると訊いたので、メソッド外部へインスタンスをたらい回しにしても 参照は消えていないのでoperator+で宣言した実体は生きているはずですし、 演算前のxも消えるはずです。何でこんな事になってしまうんでしょうか。 もうやだ。みんな死ねばいいのに。
>>463 必要な情報が抜けすぎです。
取り敢えずfoobar()ってなに?
foobarはなんでも良い処理。 VSのデバッガで追うと、x=x+y;の次の行にいった時点でxが元に戻る。
>>463 答え以前に structが何か理解していないな。
参照型じゃないぞ。
それ言ってることがおかしいぞ。 x=x+y; が実行された時点でデバッガは次の行にいってる。 この時点で新しいxの内容が表示される。 もうちと正確に表現してくれ。
>>463 その質問の仕方じゃ、人様にお前さんがこさえたバグを
エスパーしろと言っているのと同じだと思う。
問題を再現可能な最小のコードを提示しようよ。
>演算前のxも消えるはずです。 代入されるの間違いじゃないか?
>type.FindInterfaces(object.Equals, interfaceType); 便利になったもんだ。
まずい
八名信夫か
>>463 なんで構造体を既定のコンストラクタでnewしてんの?
意味分かって書いてるならいいんだけど。
にわかっぽいね。
コードうpれ returnに変なもん渡してんじゃないの? 引数を内部で書き換えて終了させてるとかw
477 :
380 :2007/05/31(木) 00:16:02
List<double> で降順ソートしたいんですが、これって比較関数を自分で作らないとダメなんですか。 C++のstd::greater<double>()みたいなのはないんでしょうか。
list.Sort(new Comparison<double>(delegate(double x, double y){return y.CompareTo(x);}));
速度が必要ないときやメンドクサイときは Sort()→Reverse()
>>435 class Hello {
bool finalized = false;
public Hello() { Console.WriteLine("init"); }
~Hello() { finalized = true; Console.WriteLine("fin"); }
public bool Finalized { get { return finalized; }}
public void ReInit() {
if (finalized) { finalized = false; GC.ReRegisterForFinalize(this); Console.WriteLine("re-init"); }
}
public void Say() { Console.WriteLine("Alive : {0}", !finalized); }
}
class TestWR {
WeakReference wr = new WeakReference(new Hello(), true);
void InvokeWR() {
Hello h = (Hello) wr.Target;
if (h == null) { h = new Hello(); wr = new WeakReference(h, true); }
else if (h.Finalized) h.ReInit();
h.Say();
}
むしろ単純に逆順ならそれが一番速い。 比較関数自作の場合は別だが
>>482 の解説
ファイナライザでアンマネージドリソースを開放したがメモリは回収していない状態で、
そのメモリを再利用してオブジェクトを復活させるのに使用する。
一度ファイナライザが動くと次回のGCで即メモリが回収されてしまうので、
最初期化でGC.ReRegisterForFinalize(this)を使い今一度ファイナライザが動くように設定するのがポイント。
GetHashCode()の実装で困っています。プロパティが持つ値すべてを 比較して一意性を持たせたいのですが、どんな手法を使うべきでしょうか? 例えば、string型でもint型でもすべてbyte[]型に変換してXORする、 といったやり方はどうでしょうか?
>>485 オーバーライドしなくてもインスタンスごとに
GetHashCode()の戻り値は違うけど、
わざわざオーバーライドする必要はあるの?
参照型に、値型のような一意性を持たせたいのです。 インスタンスのアドレスじゃなくてプロパティの値を見て。
最初から値型で定義すればいいかもしれないんだけど、 値型プロパティだけじゃなくて配列の中身なんかの参照型の中身も見て Hash求めたいって場合もあるから、 実装の定番のやり方を知っておきたいなと思いまして。
そりゃ値等価で比較したいなら必要だろ。 ハッシュはバラケてるほうが良いのは確かだがハッシュの計算に時間がかかったら本末転倒。 極端な話、等価であれば同じ値であることを保障すればいいので、 一律同じ値を返しても、パフォーマンス以外支障はない。
目的はDictionary使って値等価の参照型インスタンスを高速検索 することです。だからハッシュがばらけててくれないと困ります。。 プロパティを変更したときにハッシュを再計算させて、キャッシュに 残しとけばGetHashCode()ではそれを返すだけだから速度は解決のような。 別の値でおんなじハッシュになったらどうするんでしょうか?リストで 連結して、それらをEquals()で比較?
あるTypeがあったとしてobjectをそのTypeでキャストしたいとしたらどうしたらいいんでせう? 教えてエロイ人。
object instance=new Type(); ((Type)instance).Method();
>>492 すまん質問がおかしかった。
ついでに事故解決しますた。
>あるタイプを表わすSystem.Type t;があったとしてobjectをそのtでキャストしたいとしたらどうしたらいいんでせう?
>教えてエロイ人。
質問の意味はわかったがそれをどうやって事故解決したの?
あーいらつく
496 :
デフォルトの名無しさん :2007/06/01(金) 15:21:45
System.Convert.ChangeType です。 けれども少なくともEnumの場合は (EnumType)(System.Int32)0と Convert.ChangeType(typeof(Enumtype),0)では動作が違うようです。 後者ではInvalidCastExceptionがでます。
test
failed.
>>490 そういう用途の場合だと、自分はシングルトンパターンを使って
値等価のインスタンスはひとつしか作成しないようにします。
シングルトンパターンが使いにくい場合もあるかもですが…
メンバの値変更できないじゃないか
>>490 普通にプロパティのハッシュを求めてシフトしながらxorとればいいでしょ。
ハッシュの衝突は気にしなくてよい。
>>499 Stringのようなオブジェクトを作りたいって話だとおもうんだが、シングルトンじゃ無理だろ。
レミングトンなら?
GetHashCode()についてお尋ねした者です。レス頂いた皆様有難うざいました。
>>499 様 singletonてよりflyweightfactor?それもいい。参考になります^^
>>489 様
>>501 様 かっこよいです。貴方のようなスーパーハカーになりたいお。
ココで質問する内容じゃないと思うよ。
?
困ります って書く奴は幼稚に見える。 勝手に困ってろ。
アンカーもなしにそんな大深度レスつけられてもなあ・・・
キーに使うならイミュータブルにしたほうが安心だと思うよ。 まあできないこともあるだろうし仕方ないけどね。 ※絶対おかしな使いかたしてトラブるやつが出てくるんだ…
連結リストを作ってみた list_data.next -> .next -> .next -> [null] これを解放するときは先頭の list_data = null; を実行するだけでいいのかな?
他の箇所から参照されていなければそのうち解放される。
現実問題としては参照消すために null を代入することってまずないよな
VB6じゃ Set obj = Nothing よくやってたけどね
それは参照カウントを使っていたからこそ必要だったこと
>>515 vbモジュールに参照を置いてしまうようなプログラムも少なくなかったからね。
消し忘れるぐらいならなんにでもNothingをぶち込めとかの程度の低いコーディングルールがまかり通っていた。
.NETのGCだと循環参照もスパッと消えていい感じ。
相互に参照をもってる双方向のリストも問題なく消える。
不要なGC世代の昇格を防ぐ、とういう意味では 無駄では無くも無いような気がしないでも無いような
世代に影響が出ることなんてほとんどないから気にしなくていい どうせ大抵はスタックに一つ参照がとられるだけかフィールドとして親と寿命は共にするかのどっちかだ メソッドの途中ですら使わないオブジェクトは GC 対象になるし
GCは優秀な子
ミッションちゃんの事だから、やっぱり「狩らなきゃ・・・狩らなきゃ・・・」みたいな脅迫観念があるんだろうか。
???
523 :
デフォルトの名無しさん :2007/06/03(日) 22:40:40
ADO.NETでデータベースプロバイダに依存しないデータ取得コードを作成したいと思っています。 SQLの条件を書くのに便利そうだと思って、DbParameterなどを調べて使っていたのですが よくよく調べてみると、パラメータ化の書式が違うようです。 DbParameterなどは「データベースプロバイダに依存しないデータ取得コード」には 結局使えないということで理解はあっているでしょうか?
「データ取得コード」がどういうものを指しているのかわからないが、 プロバイダに依存しないデータ取得メソッドレベルの話ならラップするだけじゃねーの?
ImmとかTFSとかとにかくそこらへんのクラスはあるですか
ない APIでドゾ
>>525 強いて言えばWPFに多少入ってる。
でも激しくラップされた高レベルAPIばかりだから
ネイティブAPIの代わりにはならんよ。
sdffsdfsdfadfsdfwefdfssdfsdfawsefsdfsfsdfsdfsfsfsfsdf
.NET遅い。なんかムカついてきた。
負け惜しみ乙
速いと思う奴はいないわな。
Javaに比べたら遅いとは思わないが、C++Nativeに比べたら、明らかに遅い。 そんなことは初めから分かってることだ。
ムカつくほど遅いというのは何なんだろう・・・ メモリが少ないのかな
大抵アルゴリズムが悪いんだよな。そういうのは。
昔、VBで遅いっつうから見てみたら プロパティの値変更をループの中に入れてるのがあった で、それが実態はプロシージャだったもんだから・・ Windowのサイズ変更とかだったかなあ、最後に一回呼べば済むようなやつね。
>>534 遅いのはGDI+じゃまいか?
アルゴリズム的なのはそれほど遜色ないと思うが。
どうせ、グラフィックスならダブルバッファも行わないで遅い遅い、 言ってるんだろうな。
540 :
デフォルトの名無しさん :2007/06/04(月) 13:01:36
ループの中でオブジェクトの不必要な生成・破棄を繰り返してる とか? string something += ....なんてやると…
ダブルバッファしても遅いだろ。 .NETが速いっていう感性になりてーよ。 そういう奴ってなんにも不満がなくて、幸せそう。
速いとは誰も言ってなかろう。
DrawingとFormsは確かに遅い。
.NETが速くもないが遅くもないっていう感性になりてーよ。 そういう奴ってなんにも不満がなくて、幸せそう。
Java、VB6からの移行組みはそれほどでもないだろうが、 C++からの移行組みは文句のひとつもいいたくなるだろうな。 ましてや遅いのがスキルのせいにされてはな。
プロパティとフィールドとでそんなに速度違うもの? 自動プロパティがでてきてフィールド使う機会が減りそうだから心配。 あと、自動プロパティって○○Changedに勝手にアクセスしてくれるかね?
プロパティはJITコンパイル時にかなり最適化されるから、パフォーマンスにはほとんど差異はないはず。 自動プロパティがPropertyChangedイベントを呼んでくれるって話は聞いたことがないな。 ところで、2.0からは○○Changedイベントは非推奨になってるよ。
VB6のプロパテーの話だろ
もし、本当に遅いのなら、そのクリティカルな部分だけC++で書けばいいだけ
別にC++で書かなくても、アンセーフにして書けばいいだろう。 わざわざ、DLL呼ぶのは冗長だな。
>>547 INotifyですね。教えてくれてありがとう。
552 :
74 :2007/06/04(月) 14:52:22
>>77 AutoIncrement の Ture/False を取得したいんではなく、
実際にIncrementされた値(元々1とかだったらInsert後は2になっているとかの2の部分)が知りたいわけです。
DataSet に NewRow した後に Updateかけて新規追加するか
TableAdapterにInsertして新規追加するです。
質問の仕方がごっちゃになってました、スマソ
>>85 SQLiteです。
ADO.NET 2.0 Provider for SQLite 使ってます。
553 :
デフォルトの名無しさん :2007/06/04(月) 15:05:12
>>541 何をやったらどういう風に遅かったのか言ってもらわんことには
議論のしようがない。
640*480の面積をダブルバッファで塗りつぶすと 20FPSくらいしかでない
555 :
テスト :2007/06/04(月) 15:12:17
テスト $amp;
556 :
テスト :2007/06/04(月) 15:13:20
&
557 :
テスト :2007/06/04(月) 15:14:21
aaa
20FPSでは、ゲームには使えないな。 最低でも30FPSは確保できないと。 ゲームではXNA使わないと無理か。
ラスタオペレーションろくに無いしな
とりあえず、Formsの代わりにWPF使えれいいか。 2000に対応してないのが痛いが、業務アプリでは WPFで十分通用するからな。
別に初期起動が遅いのは、メモリにプログラム読み込むから仕方ない。 アプリ起動後遅いのは、クリティカルになる可能性があるが、 業務アプリ程度なら、それほど気にならない。
60fps以上出るDirectXアプリC#で普通に作っているけど?
なんという読解力のなさ・・・
.Netが遅いということに対して速いPC用意するのはなしな。 昔のJava厨みたいだから。
.NETが遅いんじゃなく、Formが遅いから、DirectXは高速
裸のC#そのものは遅くないんでしょ?
なんでFormsは遅いの?Swingと同じミスを犯したの?
>>569 Formsが遅いのはコントロール毎にPaintを呼んでいるから。
なんで、ってそもそもそんなに遅くも重くもないけど。。 確かにWinアプリの起動は遅いんだけど、それも2.0から少し速くなった感じがするし。
>>570 それWindows Formに限らないから。
恥ずかしい奴だなw
WPFって実質、速いPC用意するのと変わらないじゃん。
3Dグラフィックス使えるPCじゃないと意味無いな。
パーツショップで売っててDirect3D対応してない商品を教えてくれw
世の中自分と同じパソヲタばかりだと思ってるなら立派な精神病だよw チップセット内臓のVGA使ってる奴だっていっぱいいるんだけど。 そうでなくてもノートPCとかね
それでも一応動くだろ
企業は自宅でPC所有するわけじゃないんだ。 そんな簡単に新しいPC調達できるわけ無いだろう。
>企業は自宅でPC所有するわけじゃないんだ 日本語でおk
そんなことより、ListViewのDetailsでMSのいうとおりにカラムヘッダクリックでソートできるようにしたんだが、 クリックした瞬間描画がクリアされて、1秒後に結果が表示される。 移植前のWTL前はクリック直後に即表示だったんで、1秒も我慢ならんのだが、 クリックした瞬間描画がクリアにならないようにするにはどうしたらいいか教えて。
別にWPFはそんなにスペックいらんだろ 3Dとか使わなきゃ
そもそもGDIが遅いからDirectXが出来たのが10年以上前の話
>>581 コードうp
うちのpen4 2.4Gじゃそんなことにならん。
件数が多いのか?
だから「遅い」って言うやつは具体例を挙げろと何年言わせるんだ。
586 :
585 :2007/06/04(月) 21:53:26
あ、>585は
>>581 じゃなくてゲーム厨のほうな。
>>584 class ListViewItemComparer : System.Collections.IComparer{
public void SetColumn(int col);
public int Compare(object x, object y){
return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
}
}
col保持部分ちょっと省略したけど、これをListViewItemSorterに設定して、
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
((ListViewItemComparer)this.listView1.ListViewItemSorter).SetColumn(e.Column);
}
してるだけ。件数は500件ぐらい。カラム数は14。pne2.6G。
>>585 そんなムキにならんでもいいだろうに。
要するになんにか心に不安を抱えてる人間なんだと思うよ。
不安な人間というのは自分の知らない人や物を否定したがるもんなんだよ。
2chだったら極東スレだのハングルスレだの見れば実例にあふれてる。
イジーライダーって映画にも「アメリカ人は口を開けば自由というが、本当に自由な
連中を見ると嫌悪する」って台詞が出てくるな確か。
>>587 揚げ足取りにしかなってないかも知れないけど、それってサンプル通りじゃないよね
それだとColumnClickのイベントハンドラでListViewのSort呼ばないとダメなんじゃないの?
勝手にソート呼んでくれてるよ。 ListViewItemSorterを設定したら勝手にソートするってMSのサイトに書いてあった。 それより、知りたいのは、クリックした瞬間描画がクリアにならないようにする方法。
だからListViewItemSorterをセットしてないでしょ。
それとも
>>587 はコピペミス?
>>591 >col保持部分ちょっと省略したけど、これをListViewItemSorterに設定して、
>>591 バカか?揚げ足とりしようとして失敗したの?
>>592 俺が誤解してるのかも知れないけど、
MSDNライブラリのここの「メモ」にある
>ListViewItemSorter プロパティの値を設定すると、Sort メソッドが自動的に呼び出されます。
とは、ListViewItemSorterのセッターがコールされると、後続してSortメソッドが
呼び出される、という意味ではないのかな?
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.listview.listviewitemsorter (VS.80).aspx
あとここのサンプルコードにはこうも書いてある
// Set the ListViewItemSorter property to a new ListViewItemComparer
// object. Setting this property immediately sorts the
// ListView using the ListViewItemComparer object.
とりあえず、質問者は回答者の回答を試してみれば?
>>594 たぶんそれだった思う。
でも、Sortメソッドを全く呼んでないけど、ソートはされてるので、そう理解した。
GDI 遅い の検索結果 約 27,800 件中 1 - 100 件目 (0.11 秒)
Sort()し忘れたら、勝手にSort()呼んでくれるのか。 ListViewは至れり尽くせりだな。
必死にGDI+でDDB扱う方法探してるんだがやはり無理だったのか。 orz
>>601 今更DDB使って高速化してもVista以降のWDDMだとにCPU処理されてDIB相当になるよ。
>>596 やっぱりSort呼ばないとダメだと思うよ。
それが遅い原因かどうかはともかく。
>>594 の「メモ」は英語では
>When you set the value of the ListViewItemSorter property, the Sort method is called automatically.
となっている。
どぼん氏のところのサンプルでも、
>>587 のコードのようにListViewItemSorter のセッタを呼んでない場合には
ちゃんとSortメソッドを呼んでいるようだ。
10倍遅いってw
当たり前だ。DIBからDDBに変換してるんだから。
585 名前:デフォルトの名無しさん[sage] 投稿日:2007/06/04(月) 21:52:37 だから「遅い」って言うやつは具体例を挙げろと何年言わせるんだ。
>>603 ありがとう。ビンゴじゃないけど、わかりました。
昇順、降順機能を追加したとき、Sortingプロパティを設定してました。
Sortingプロパティを設定してもSort()が呼ばれるみたいです。
遅い早いネタは質はともかくもりあがるな
せっかく苦労して作っても、「遅い。いらない(あるいは作り直せ)」と言われたら最悪だからね。
っつーか、作ってから「遅い」って言う時点でセンスの問題としか…
まあプロファイラでチューニングすりゃいいしな
問題はそんな簡単ではない。
そうだよな。センスの問題だよな。 遅いと感じないセンスの持ち主は顧客、ユーザーとしては最高だ。 悪く言えば、鈍感、のろまなんだけど。
キミが書くプログラムは何でもかんでも遅くなるんだな
>>614 そういう口調で話すキモイ奴が今オレの横にいる
C++で書くと劇速なんだけど、C#で書くと劇遅なんだよ。 別に理由は分かってるよ。25年もコード書いてるから。 ただ愚痴りたかっただけ。
>25年もコード書いてるから それって相当な負け組みなんじゃ… いるのか?ずっとコーダのまま、そんなやつ。
どんなプログラムで劇遅なのか知りたいのだが? Formsが遅いのか?それとも、ロジックの実行速度が遅いのか?
IL 使ってるからだろ
↑ミロ
.Netが遅いと認めたくないのは、昔のJava厨と同じ心境なんだろうね。 ただ、Javaと同じ間違いをしなければいい。 未だにデスクトップアプリでJavaが全く普及してない事実をよく考えないとね。
Java アプリのデザインってダサ(ry
処理速度を比較したサイトがあったけど
ちょっと待てよ。昔、Javaブームってあったよな。C#ブームってあったか?
今
>>625 MSのこれからの戦略次第でC#ブームは来る。
Javaブームは、言ってみればITブームに乗って偽装請負会社とSIの小銭稼ぎに利用されただけ。
これから来ると思い続けて早5年・・・
じゃあ、.Netのデスクトップアプリは普及してるか? まさか、Javaが敬遠された理由、遅い、もっさりしているとか同じ理由で普及してないんじゃないのか?
遅さとかより.NET FrameworkやらJREやらをインストールしなければならないというのが面倒 .NET Frameworkは、最近Windowsに標準搭載されているからその点有利になってきていると思うが
Java もインストールしなきゃダメだぜ。最近は。
昔はWin95も遅い、メモリ食いと言われたが今となったら軽いOSの部類。 あと10年待てばOK。
あ、JRE って書いてあるわ。 .NET のところだけ見て反射でレスしてもうた。
日本語読めないのですか
自分の周りだと、元々VC++でやっていたところはどんどんC#に置き換わっていってるけど。
デスクトップアプリはユーザがMFCを基準にして、性能を見ているから、 ランタイムを使うアプリからすると厳しいな。 初期起動でメモリにアプリを割り当てるのに時間がかかり、 Formsだと描画速度が劇遅でユーザが不満に思うのも無理がない。
TwinTail便利だよ
隣に比べるものがあるとダメだな。
非同期化やらUIが固まらないことを徹底してみたらええ感じですよ やるのも楽ですし。
フレームワークの品揃えじゃないかな ちょっと凝ったことしようと思えばAPIの宣言からってVBと同レベじゃん
ちょっとラップしてやれば気になるようなことじゃないよ
>>618 単に趣味でプログラムやってるかもしれないだろ
というかC#な時点でその可能性が高いだろ
というかそういう考えが出る618は仕事でやってたりする?
unsafeだし
何でも包み込もうとすると、C++みたいにごちゃごちゃになってしまう。
P/Invokeの宣言を集めたアセンブリを標準で入れといてくれたらいいのに
>>636 不満を感じてるのは作り手だけで実際使ってる方は思うほど気にしてない罠
>>642 ほっとけw
不幸な奴というのはえてして不幸の原因をお門違いのものに求めるものなんだ。
防衛機制という心理的メカニズムだな。
642は不幸の原因を自分がプログラマであることに求めてしまったから、
642の中では不幸とPGが同値なんだろう
>>645 MS自身DllImportを使いまくって.NET Frameworkのライブラリを実装してるわけだから
.NET FrameworkのライブラリのDLLの中に大量に含まれてるよ
そういうのは全部internalになってるけどw
VB6とかのシステムがアホみたいに残ってるから これから仕方なく.NET系VBへの以降が増えてくる。 世の中VB技術者が数だけはアホみたいに多いしな。 んで、.NET系トンでもシステムが爆産されて.NET使えねー扱いと orz
>>649 C#.NETだけだと、人数は少ないけど品質は最低限保証されるのができていたが、
VB.NETが参入してきて、人数が激増で品質はガタ落ちorz
>>649 VB6の遺産をむりやり使おうとしてるプロジェクトの悲惨さは目も当てられないよな。
でかいプロジェクトだと仕方ないのかもしれないが・・・
>>650 VB.NET自体は悪くないと思う。
ただ、技術者の質がな・・・・
あのさー、C++なんかと比べる時点でそいつがバカなだけじゃねーの? その昔にアセンブラとC言語を速度比較してたのと同じじゃねーか。 どう考えても、今一番求められてるのは「開発コスト」だろ。 それも知らずにC#に手を出す意味がわからん。 開発コストを考える必要のない、誰も使わないフリーウェア作成が趣味のプログラマーは 最初からC++やってればいい。
オレも会社で「.NETって遅いの?」って聞かれるけど 「速くはないが十分な速度。でも処理速度より開発効率が優先されてる」 って答えてる。 でも実際速度で困ったことはないけどな… いったいみんな何作ってんの?
グリッドで10万件を表示するのが遅くて困ってまつ(><)
↑実際こんなこと言ってるバカが多いんだろなw
何でソートして上のほうの1000件ぐらいで絞らないんだろうね。 馬鹿だらけ。 業務で使っているDBは表示部で絞ってるよ。
10万件表示とかバカだなwwwwwww
.NETが遅いとかいう奴に限ってExcelをなんちゃってDBに使ってたりするしな。 Excel 2007で65535行超えられるようになったらしいんだけど 絶対予想の斜め上を行く奴が出てくるぜ。
ファイルサイズの限界が待っているなw
.NET遅くないという奴って顧客なら大歓迎だが、開発者なら一緒に仕事したくないな。
C++で10万件データをListViewで表示しても劇速だよ。仮想リストビューだけど。 Oracleからのデータ取得に配列アクセスできるし。
で?
10万件のデータに使われるメモリは、気にしなかったのか?
664 :
デフォルトの名無しさん :2007/06/06(水) 06:05:36
なんか、新しいバージョンのc#だと、音楽が鳴らせるらしいじゃないですか? これって、ダイレクトxのラッパーなのですか? それともウイン32apiを使ってるのですか?
古いバージョンのC#でも、音楽が鳴らせます。
666 :
デフォルトの名無しさん :2007/06/06(水) 07:19:51
どうやって?
>>666 フナムシでもお前よりは頭を使いそうな気がする。
668 :
デフォルトの名無しさん :2007/06/06(水) 08:04:46
君は好戦的で性格の汚い奴だな。 もしかして、dllインポートとかの事を言ってるのか?
上でダブルバッファを使えばましになるみたいなことがあったので、 Bitmapを用意し、DrawImageしたんですが、パフォーマンスがでません。 DrawImage以外でBitmapをPictureBoxに速く転送する方法ってありますか?
ダブルバッファ=二度手間
DrawImageって内部では何やってんのかね BitBlt呼んだら変わるかね
>>666 StartSound()とかStopSound()とかを使うんですよ。
673 :
デフォルトの名無しさん :2007/06/06(水) 10:54:48
>>672 いや、俺の古いバージョンってのはもっと前のバージョンの話なんだけど、
まあ、良いです。
もともと、詰まらんことを聞いただけなので、
すんませんでした。
>>669 いやドトネトの世界でダブルバッファって言えば、
普通は君が言ってるような自前の実装じゃなくてコントロール自体のダブルバッファリングの機能を
使うことになるんじゃないの?
struct data { double arary[256]; }; というC言語での構造体を、P/Invokeを用いてC#に渡したいのですが C#で同じ構造体をつくるにあたって、double array[256]は どう定義すればよいでしょうか?よろしくお願いします。
ライブラリも読まないなんて・・・
いままでの経験でつまみ読みでいけるだろうと思って読むが、 基本的な単語の定義が違いすぎて、混乱して、どうしよもなくて、 鬱になりそうで、ここで相談してるんじゃないの?
BitBltで試した事はあるが APIの呼び出しコストのせいか更に遅くなった
すいません。少しは調べたのですが [ MarshalAs( UnmanagedType.ValByArray, SizeConst=n )] だと構造体のポインタが宣言できなくて。すでに鬱です。
DDBまで手出さないとね
遅くなるのはキャッシュを行っていないだけなんじゃないか? APIレベルの話ではないと思うが。
>>681 使っているのがC# 2.0なら固定サイズバッファとか。
ttp://msdn2.microsoft.com/ja-jp/library/zycewsya (VS.80).aspx
ただ、悪いことは言わないから
まずIntPtrで構造体の先頭アドレスだけ受け取って、
ちまちまとMarshal.ReadByteやMarshal.Copyで何とかする技術を
身につけておいたほうがいいと思うよ。
たくさんコード書かないといけないかもしれないけど、
とりあえず動くものは確実に作れる。
んで、ドトネトの世界にある程度なれてから見直せばいい。
属性使ったマーシャリングサポートは、わかれば一発なことも多いけど
悩めばわかるというものでもないので、わからないときにどうしようもいかなくなる。
属性によるマーシャリングは、上級者向けショートカット記法と思ったほうが良い。
固定サイズバッファでうまくいきました。地獄に仏です。 助言まで頂いてなんとお礼を言えばよいやら。 本当にありがとうございます。
デバッグ中に"現在のメソッドのコードが最適化されているため、式を評価できません"とでてウオッチができないことがあるんですが、なんざんしょ? 全部デバッグコードなんですが。
そのままの意味だろ。 Debugモードでの最適化をオフにしてみれば?
>>687 プロジェクトのプロパティ、ビルドタブ内のコード最適化は関連するプロジェクトですべて未チェックです。
当方、職場のPCがスタンドアロン環境なんですが、 ヘルプ使うたびに困っています ドトネトになってからオンラインで使うのが前提のようですが、 msdnライブラリってインストール出来る無償版ないのでしょうか?
692 :
667 :2007/06/06(水) 20:34:52
>>668 ごめん、本当はただ誰かをフナムシって罵りたかっただけなんだ。俺の発言は忘れてくれ。
俺はフナムシ以下だよ。フナムシのように動き(仕事)は早くないし、 フナムシのように掃除がうまいわけでもないし、 彼女いないからフナムシのように子供だってつくれない。 …アメーバ以下かもな。
ごめんなさいごめんなさいごめんなさい。 アメーバは偉大なサービスですよニコニコ それに、以下じゃなくて正確には未満だな。 こういうズボラさがバグを生むんだよ。 ループ条件で以下と未満を間違えて OutOfRangeExceptionって感じだな。 俺はOutOf人生Exceptionだがなw tryも彼女をcatchする元気もない。 いつもfinally一直線だけど、深夜に 会社のCloseをし忘れるおばかさん♪ だってチンポをusingしたことないんだもの。 やっほ〜〜おちんちんしゅぽしゅぽ見てママ
仕切りなおし。
ハイ次の方〜
みなさん、冷たいのな。 コールドスタンバイね。 俺の息子はホットスタンバイ。 スレ違い哀しいお。 息子といえば俺に隠し子ハケーン。 ハグはないのにバグだらけ。 虫未満の俺様には出来すぎた ムスコでした。使えないけど、 愛おしくて潰せない。 こんなオヤジギャグを聞かされながら 毎晩殺伐と残業する人生にEndInvoke ごめん。他スレ逝ってきます。 このカキコを覗いてる会社様 精神病認定よろしく。
次の患者さんどうぞ〜
いや、患者はもういいって
【DVD】ラーゼフォン 第08話 「凍る聖夜」(640x480 DivX502).avi
GC.Collect();
703 :
664 :2007/06/06(水) 23:50:07
でもフナムシってなかなかいいフォルムしてるよな
D&Dのドロップの処理でその処理が重い処理の場合、 ドラッグソースのアプリまで固まってしまうんですが、 こういう場合、とりあえずドロップはすぐリターンして 次のターンで実行すると思うんですが、そのやり方の 定石ってあるでしょうか?
別スレッドにしてDoDragってよびだせないっけ?適当なかきこだから間違ってたらす万。
どうみても海ゴキブリですw
Delegateって保存かのうかね? 中のインスタンス情報とかメソッドシグネチャとか引っ張って来れれば力技ででも何とかなるんだが。 ゆくゆくはイベントを保存したい
>>705 次のターンで実行するって意味不明だけど
エフェクト返す前に非同期でやるんじゃね
スレッド起動するか、メッセージポストしてそこでやるか、じゃないかなあ
単純に考えて、delegateにメソッド突っ込んだだけでも インスタンスへの参照になるわけだから、メソッドがstaticでなければ インスタンスを保存するしかないね。 それともメンバポインタめいた事をしたいのかね? Managed C++でもつかってろ。
普通にシリアライズ出来ただろ それが意味あるかはまた微妙ではあるが
>>708 コマンドパターンとかファンクタという言葉を調べてみると幸せになれるかもしれない
ここはATHLのすれMFCはすれ違い
715 :
デフォルトの名無しさん :2007/06/07(木) 19:30:26
TextBox1と2に西暦を入力して、それを取得してOracleに接続、 SQLでDataGridに取得した範囲を表示させたいのですが・・・・ できますかね?
できます。
717 :
715 :2007/06/07(木) 19:38:04
どうやったら出来ますか?
逆に何ができなくて悩んでいるのか聞きたい
それはC#や.NET自体とは関係ないからこのスレで聞くようなことじゃない
720 :
715 :2007/06/07(木) 20:20:24
一応、C#でプログラムしてるんですが・・・どこで聞けばよかったでしょ?
どこまでやってどこが分からないか、書いたコードのどこがおかしいのかの質問を書き込めば ここでOK 各ステップすっ飛ばして全部分かりませんと言うなら ここはスレ違い
719 じゃなかった……
724 :
715 :2007/06/07(木) 20:33:01
ええと、DataTime.Parseを使って日付を取得したものをTextBox1と2に設定しました。 それから、OleDbAdapterをDataSetにセット、DBに接続してSQLのSELECT構文を使ってDataGridに表示させようとしてます・・・。 こんな感じでいいのかな・・・・?初心者丸出しでスミマセン。
それで、どこが分からないのでちゅか〜?
726 :
715 :2007/06/07(木) 20:38:58
TextBox1と2の範囲の西暦をSQLに反映させて表示のさせかたがわかりません・・・。
C++++
ふらっとスレの496っぽいな。なんでこっちに来たのか分からん。
>>726 それで、どんなコード書いたのボク?
最初から順番に落ち着いてはなちてみまちょうね〜
dataAdapter.SelectCommand.Parameters.AddWithValue("パラメータ名", date1);
明治の生まれから見ればみなゆとり
どこが分からないのか、ちょっとうまく言えないのかな〜 それじゃしょうがないねボク〜 うんうんむずかしいよね〜 いちどママにごそうだんして、れんらくちょうに書いてもらってね〜 じゃあまたね〜☆
質問者に問題があるのはわかるが、他人の非をこうもバカにする奴も…
スレ違いだがマジレスしとくか
エスパーじゃないと、こんな事はわかりません!
1. textBox1/textBox2 にどのように SQL 文から得た結果を入れようとしているのか
2. そもそも textBox1.Text に入れようとしてるのか?
3. つーか、DataSet なのか? OracleClient 使ってるのか? もしかして ODBC とか?
4. てか、ToString() とか分かってるか?
Oracle なら SELECT 文で取り出すときに to_char(date_field, ’yyyy') してたら
DateTime として取り出すことにならない事とか分かるだろう
そういった情報すら一切出さずに「できません」「わかりません」とか言ったところで
他の人が「何故こんなこともできないのか」と分かる訳ないだろう
「こういう目的があって、こういうコードを書いてみたけどうまくいかない」というのと
「こういう目的が達成できない。できるのか?」じゃ大きく違う
後者じゃ、できるできないしか言いようがないし
どうやればできるのか、なんてのは答えが数多ある
他の部分でも処理に使うから日付型として取得する場合もあれば
他では使わないからそのまま取得する方が楽 & アプリ側の処理量が減るということで
to_char() する場合もあるかもしれない
そういう前後の状況なども考えずに
>>715 のような聞き方をしたところで
>>716 のような答えになるのは当たり前
735 :
734 :2007/06/07(木) 22:32:34
>>733 基本的には同意だけど
学生さんとかだったらかわいそうだが
C# + Oracle という構成は、普通業務だろ
そう考えると、その程度もできないしヘルプすら調べられないなら
給料もらう資格すらないと思った方がいいとは思う
>1. textBox1/textBox2 にどのように SQL 文から得た結果を入れようとしているのか お前も質問100回読み返すくらいの努力はしようぜ……
その質問はどうせ、新人文系だろうな。
書き方からして多分リアル中学生or高校生… ふらっと c#は初心者用ですからそっちに移ったら良い。 あとなあ、おまえさんは一からプログラム作るレベルじゃない。 他人の作ったプログラム読むか、初心者用の本読んで勉強したほうがいい。
>ええと、DataTime.Parseを使って日付を取得したものをTextBox1と2に設定しました。 >それから、OleDbAdapterをDataSetにセット、DBに接続してSQLのSELECT構文を使ってDataGridに表示させようとしてます・・・。 んーなんだ、もそっと日本語分かりやすく書いてけれ。
半年ROMってろ ←嘘
>>738 無駄無駄
たぶん昨日ふらっとスレにいた496だ
ブッ飛んだ質問してたからな
_,,-'' ̄ ̄`-、 / \ ,/ \ / ― ― ヽ lヽ - 、 ! , _ | |r――-、_⊥ ,――'-、 |,-, |::::::::::::::::/ |ヽ:::::::::::::::|-|'イ!| ト、__,,/: |: `、__,,/ ,|ソ/ .| 、_ j| _,、 ,|-' | /lll||||||||||l`、 ,| `i ,|||' ̄= ̄`|||、 / ト、 「|ヽ|ll||||||||||||||||| /i |::::\ /:::::\`!!||||||||||||!!' |::::::::\ /::::::::::::::`ー-、.._ i |::::::::::::::\ /:::::::::::::::::::::::::::::::::::`ー-、. |:::::::::: ハント・シロムッテロ[Hunt Siromuttero] (1955〜 アメリカ)
496だとしたら質問しっぱなしで消えるからあまり期待するなよw
DataTime.Parse 例外をちゃんと拾っているだろうか。 BETWEEN @f1 AND @f2
>>742 この手の奴って色々あるんだなぁ
でもググレカスのインパクトが強すぎて後はどれもイマイチだな
>>744 いいひとだな。君は。
この汚らしい流れの中でひとり輝いているよ。
こんなとこでROMっててもなあw 回答者のクオリティとかじゃなくて、限定された問題に ピンポイントで答えるためのスレだから横から読んでてもあんまりためにならないよ
他の人がどんな質問の仕方して、どんな答えが来ているか見るだけも 勉強になるのでは? 2ch見始めてから1年くらいカキコできなかった俺が言う。
こういう中学生じみたくだらないスレの流れもいいが(俺は好かないが)、 どうもここのところ良貨が悪貨に駆逐されてないか? まともなレベルのPGは呆れて来ないようになってきている気がする。 少しはアホなレスは控えた方がいいんじゃないの? このままのトレンドで行くと困ったときに質問するチャンネルが一つ減るぞ。
,.,.::;:::;:;:::;::;.,.、 /;::;::;:;:::;:;::;:;:;::;)._ ,...;::;:" ´ ` ー" ヽ:;:ヽ ,:;::; ヽ:;ヽ {:ミ ミ;:., ;:;:;: i:;:ノ i;:;i ;;iiiiillllllll) (llllllllliii;; l:;::;} r^ミ /_(;;)ゝヽ / <(;;)_ゝ ミ i ^ヽ.  ̄ l l  ̄ /^i ヾ i: . , i j 、 .:./^ i ヽi: : : ^`-'^ . :./-'/ _| i:. :.: .:_.:_.:_:._:. :. :. .:.lー'" /ヽ .: .:...´ニニニ`. :i..:/ / ヽ :.ヽ.: .: :. : .:. .:.i/ ヽ . :.ヽ、: .:_:ノ/ コ・チミルナ [Co Chimirunna] (1902〜1959 キューバ共和国)
自分がどんな状況にいるか説明できない質問者、というのも困りもの。 回答者もあれだが、質問者のレベルがスレのレベルということもあるのでは
752 :
デフォルトの名無しさん :2007/06/07(木) 23:48:32
現在、Delphiを使っていて、ちょっとC#も使ってみようかと思っているものです。 C#のGUIコントロールは、UNICODEに対応しているのでしょうか? また、国際化対応のためのコンポーネントなどがありますでしょうか? GetText相当のものでもあればよいのですが・・・。
>>713 それはeventとかを使わず独自のファンクターでsubscribeをしろということかね?
>>752 yes
コンポーネントは必要なし。
フレームワークでおk
また、だんだんフナムシって罵りたくなって北。
>>753 そんなことしたからといってできるとは思えない
やっぱ国際化ってサテライトアセンブリでやるのかな。 簡単なのでいいけど、ユーザーによってはテキストで(ini or xml ) 言語ファイル作れとか言うから困る そっちのほうがユーザーが編集できるメリットはあるんだろうけど
>>757 リフレクションでメソッドインフォなりメソッド名などなどから復活とかならなんとかなるかと。
まぁせいげんもあるけれど。
760 :
デフォルトの名無しさん :2007/06/08(金) 00:56:46
>>753 保存のレベルがどこまでかだが
他プロセスなりで復元可能なレベルでシリアライズしたいなら
EventArgs に SerializableAttribute が付いている訳だから
この辺りをうまく使ってコマンドパターン化してみるのは手かも
delegate 自体を保存して他プロセスで復元となると
無名関数をシリアライズするとか
動的に IL を生成してアセンブリとして保存するとかも
できないことはないが……
>>761 特別なコンポーネントを組み込む必要なしに
フレームワークレベルでサポートしてるだろ
>>762 やりたいことは独自のシリアライズFWでデリゲート呼び出しもシリアライズすることです。
いまちょっとみていたらDelegateからMethodInfoとれるので保存できそう。
ただDelegate保存できるようにすると少しややこしいことになりそう。
その場で知り合図して使う分にはいいけれど、オブジェクトの永続化として考えるとスキーマの変更以外にメソッドの変更や匿名メソッドの取り扱いを変えるだけで再生ができなくなるか。
でもDelegate保存できないと再生のあとにDelegateの復元作業を各クラスがしないといけなくなるのでまんどくさい。
765 :
デフォルトの名無しさん :2007/06/08(金) 08:50:51
>>763 .NET Frameworkレベルでサポートされてる?
>>765 文字列リソースが入ったサテライトアセンブリを
現在のカルチャ/UI カルチャを元に自動的に選択して
適切な文字列を選択したり、ニュートラルに落としたりするのは
.NET Framework レベルの仕事以外の何だと思うの?
767 :
デフォルトの名無しさん :2007/06/08(金) 16:39:44
>>766 おお、そこまでやってくれるんだ。教えてくれて、ありがとう。
メインのフォームが閉じるボタンを押しても、閉じてくれない ことがあります。closingやclosedは呼ばれてるんですが、 表示されたままで、それ以降はなにをしても無反応です。 無反応といっても完全に固まってるわけではない状態です。 たまにしか起こらないんですが、どういう原因があるのでしょうか?
FormClosingでe.Cancel = true;にしてるとか
>>769 それは確認しましたが問題ありませんでした。
tabcontrolにtabpageが30個くらいあって、マルチラインなし で使っています。 今選択中のタブのインデックスを0として、 selectedtabを一番右に設定すると左のほうのタブ が描画されないです。invalidateやvisibleをいじっても だめなんですがどうすればいいでしょうか?
>>768 スレッドが動きっぱなしになってるのかもよ。
ComboBoxのドロップダウンが表示されてるときにxボタンクリックしてるとか
>>771 それ俺も困ってるんだわw
とりあえず、タブのAppearanceをNormalにすると直るんだよな
775 :
768 :2007/06/08(金) 21:36:24
>>772 スレッド関係は使ってないと思います。
>>773 メインのフォームにコンボボックスはないので多分関係ないと
思います。
>>768 何かを開放し忘れてるんじゃ・・・
他のフォーム呼び出したりしてない?
777 :
768 :2007/06/08(金) 22:29:41
>>776 開放し忘れているかはわからないんですが、
closingで自分が持ってるメンバーに対してはnullをセット
して様子をみましたが、やはり発生するようです。
他のフォームはダイアログ(showdialog)として呼び出したりしています。
あとやるとすればデザイナが作ったメンバーのすべてnullをセット
してみることも考えましたが、それはまだやっていません。
>>777 まあ確実にいえるのは「普通は」そんなことは起こらないから。
なにか妙なことをやっているのは確かだということだね。
まあ、フォアグラウンドのスレッドが稼動しているときの症状そのもののように聞こえるね。
このフナムシが!
なんのこっちゃw そんなほのめかすような書き方は自信のなさの現われだろうけど、 自信がないのならむしろ黙っているべきだと思うぞ。
>>781 例えほぼ無意味な一言レスでも、彼らにとっては貴重な発言の場
許してやって下さい
783 :
780 :2007/06/09(土) 00:06:22
>>781-782 俺のこと言ってんのか?
俺はフナムシって罵らずにはいられない、ビョーキの人だから気にせんでくれ。
いや悪いボケ老人の繰言みたいなレスは最初から眼中に入ってない。 ほのめかし、というのは当然779のことだ
785 :
780 :2007/06/09(土) 00:15:04
>>784 お前、なにげ酷い奴だな。
周りの人から性格悪いって言われない?
フナムシお触り禁止
またいつもの奴かよ
>>768 GUIスレッドのMainの前に[STAThread]は入ってる?
Unionないの?
あるよ。
interop以外の目的では使うなよ
TCPListenerクラスのコンストラクタにIPアドレスが必要な意味がいまいちわからん クライアントなら接続先IPアドレスがいるだろうが、 サーバは接続される側なのになんでIPアドレスを指定するんだか
よくわからずにカキコ NICが2つあるばあい、識別するため
Loopback かどうかも指定できるしな。
マニュアル読めよ
797 :
792 :2007/06/10(日) 00:14:59
>793-794 なるほど。そんなシチュエーションは考えてなかった。 >795 どうして手持ちのヘルプには「IPアドレスを指定しないコンストラクタは非推奨になりました」ぐらいしか書いてないんだぜ?
なんという前衛的な日本語の使い方だぜ?
どうして田舎の方言かも知れないぜ?
1000年前に、798のような文章を書けば、おなじ事言われたでしょ?
>>800 自分の書いた内容がおかしくないか確かめたほうがいいぜ?
もうええわ
ほんまによういわんわ
元ネタ知らずに使ってたわ
これはなつかしいw
807 :
デフォルトの名無しさん :2007/06/10(日) 16:28:49
ハッシュで、 ht("aaa") = ("a", "b", "c", 0, 1, 2); Console.WriteLine( ht["aaa"][3] ); みたいな、キーに対して値が配列でもてるようなのあると便利なんだけど、 そんなうまい話はないですかね?
値の同一性判定次第だが普通に可能
Dictionary<string, object[]> 普通は配列のところを構造体にでもするんじゃね
ありがとうございます! Dictionary<string, object[]> object[]部分を構造体にしたほうがいいんですか? とりあえず、配列のままちょっとがんばってみます
それ以前の段階で頑張らないといけないな。
どーゆーこと?
ほのめかし知ったかはヌルーがオヌヌメ
Dictionary<string, List<string>> とか Dictionary<string, Dictionary<string, List<string>>> とか やろうと思えばいくらでもできる訳だが System.Collections.Generic 以下とかを眺めてみるといいんじゃまいか
どう見てもVariant配列だかんな
816 :
デフォルトの名無しさん :2007/06/11(月) 10:51:34
C++上がりなC#初心者なんですが、流れを読まずに質問失礼。 C#でウィザードダイアログを実現するには、パネルなどでCPage相当のものを作ってやるという形になるのでしょうか。 ざっと見たところ用意されていないようなので。。
>>816 まずそのCPageというのを説明したほうがいいと思うぞ。
>>817 すいません。CPageじゃなくてCPropertyPageクラスでした。
プロパティシートのウィザードモードみたいなクラスは用意されてないのかなと思った次第です。
node数が100000を越える無向グラフを作っているんですが、 パフォーマンス向上の為、node同士をつなげるedgeの参照などに C/C++スタイルのポインタを使用し、更に簡潔なコードなのでメモリ管理をプログラマ側で行いたいのですが、 unsafe CNode* pNode; などとするとやっぱりCS0208で弾かれます。 C/C++を使わないで済む、何か巧い方法はないでしょうか?
naiyo
それC++スタイルのポインタにすることでどれほどスピード稼げるの?
う〜ん、マイルド。
C++/CLIでがんばるお
>>819 参照型の変数ってポインタみたいなもんじゃん。
何が不満?
GC?
>>824 Cで使うようなポインタでシコシコやった方がGC任せより早いって事だろ
C# でコーディングし、要所だけ C/C++ で記述する方法が知りたいのですが、 どんなキーワードでぐぐればいいんでしょうか/どんな手がかりで調べればいいんでしょうか。
そんなこと質問するような人には必要ないことは間違いない
同じソースにC#とC++は混在できるのか? Cでコーディングして要所だけasmキーワードを使っていたMMX時代がなつかしい
混在できない Visual Studioでは別々のアセンブリにして参照設定することになると思う
できません
ファイル分ければ混在は可能だけど、同一ファイル内に C# と C++ を混在させるのは出来ないかと。
マージしろ
中途半端にC++なんて言わずにIL書いちゃえ 混在できないこともないし
C/C++を使わないで済む、何か巧い方法はないでしょうか? ↓ C# でコーディングし、要所だけ C/C++ で記述する方法が知りたいのですが、 その間およそ3時間
窓の杜で見たんですけど、 エクスプローラのツールバー作るのってどうやるんですか>< C#かVB.NETで作ってるみたいなんです
839 :
デフォルトの名無しさん :2007/06/12(火) 16:43:01
VisualStudio2005 proの開発環境の質問をしてよろしいでしょうか? エディタ上で、右のタブに移る、左のタブにうつる、というショートカット設定は可能でしょうか? ウインドウ,次のドキュメントウィンドウ(Ctrl+F6)では、開いた順?か何かよくわからない順番で、 切り替わってしまいます。 普段、Borland製品を使っていまして、VS.netを使ってみたら、 挙動が違っていたので困ってしまいました。
841 :
デフォルトの名無しさん :2007/06/12(火) 18:28:18
>>840 了解しました。
そちらに移ります。
誘導ありがとうさんです。
842 :
デフォルトの名無しさん :2007/06/12(火) 20:44:49
C#未経験です・・GUIやりたいんですけど作成手順の入門ページってないんでしょうか??
843 :
デフォルトの名無しさん :2007/06/12(火) 20:47:56
素直にWPFを待つか、切り捨てられる可能性があるFormsをするのかによる。 また、ASP.NETならそれほど、変更が加えらないと思うので良い。
あんまり深く考えないで はじめはVisual C# Express Edition落として遊んでみたらいいんじゃない?
.netでwin32のPostMessage相当のことはできるのでしょうか?
それで何を実現したいかによる
[DllImport("user32.dll", SetLastError = true)] private static extern int PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); かな?
BeginInvokeってことかいな?
>>846 実現したいのはスレッドを用いない非同期実行です。
べつのぷろせすかな
>>854 MSDNには
>コントロールの基になるハンドルが作成されたスレッド上で、指定したデリゲートを非同期的に実行します。
とあるので、別スレッドで呼ばれることはないってことでいいんですよね。
つーか別スレッド『から』使うものだよ?
なかなかフナムシって罵るタイミングが掴めない。(´・ω・`) もうちょっと馬鹿な発言ぷり〜ず!
>>855 MSDNには
>コントロールのハンドルを所有しているスレッドからでも呼び出すことができます。
と書いてあるので、同じスレッドでも問題ないですよね。
全然問題ないよ。 でもそれ非同期っていわないから。
>>858 非同期は非同期でしょ。
ただ自分にむかって自分で仕事をキックしてるだけの話
>>858 非同期とはいわないんですか?でも同期でもないですよね?
なんて呼ぶのが正解なんですか?
自スレッドにBeginInvoke発動!!! ↓ 自スレッドで作業中…… ↓ 自スレッドで作業中…… ↓ 自スレッドで作業中…… ↓ 終わった! ↓ さてBeginInvokeの次の行と。 って感じの理解でおk? これって同期じゃね?
あちこちのサイト見ているが デリゲートのBEGININVOKEはスレッドプール使ってるって 書いてある。途中で方式変わったのかな? でも同一スレッドで非同期処理なんて変だと思わないか?
自スレッドにBeginInvoke発動!!! ↓ さてBeginInvokeの次の行と。 ↓ 自スレッドで作業中…… ↓ 自スレッドで作業中…… ↓ 自スレッドで作業中…… ↓ 終わった! ↓ こうですよね。
Control.BeginInvoke はデリゲートの BeginInvoke とは関係ないぞ
>>862 だから非同期じゃん。
同期というのはBeginInvokeによって引き起こされる処理の完了に「同期して」
次の処理が実行されるような場合のことを言うんだよ。
BeginInvokeはスレッドプール使ってる 終了
自スレッドにBeginInvoke発動!!! ↓ さてBeginInvokeの次の行と。 ↓ メソッド内の作業中…… ↓ とりあえずスレッドのキューが空になったぞ ↓ BeginInvokeの方を作業中…… ↓ BeginInvokeの方を作業中…… ↓ 終わった! でいいんでしょうかや? なんかふらっと逝くべきですね
Control.BeginInvokeはべつものじゃないか。 それに翻訳の問題ありそうな気がする。 同期呼び出し Invoke
>>.863 ここで話してるのはControlのBeginInvoke
>>861 そこでいっている例についてだけ言うなら同期でよろし。まあまり深く考える必要はない
874 :
856 :2007/06/13(水) 00:16:35
>>868 そのセリフは寧ろ、俺にかけて欲しかった。
普通はコントロールを別スレッドからいじる為に使うが、 後で実行するために使うこともできるってだけの話。
876 :
873 :2007/06/13(水) 00:24:05
ゴメ 上のほう読んでなかった…
>>874 かける言葉が見当たらない…
構ってちゃんは放置で
C#を開発メインで使っている企業を知りませんか? 出来れば、C#メインで仕事がしたいと考えているのですが、 アバナードならC#メインで仕事できますかね?
マ板で聞くべし。 まともな返事は来ないだろうけど。
>>878 ぶっちゃけうちの会社では新規はC#でしかやってない。
既存の延長のやつはC++だけど。金融系。
すいません素朴な質問です。 参照型変数ががptr(ポインタ)と略される要領で、ほかにも略記号ってどんなのがありますかね コンストラクタとかインスタンスとか構造体とかあるんじゃないかなーってふと思いまして
>参照型変数ががptr(ポインタ)と略される ってのはC++とかと比べたときのメタファーにすぎない(とか書くと突っ込まれそうだけど) 少なくとも略記号じゃないよ コンストラクタとかにもそんなのないよ
現在Javaを『やさしいJava』という本で学んでいるのですが、JavaとC#って同時に勉強すると 混乱しますでしょうか?
命名規則の雰囲気で区別できる
そんなの頭のレベルの問題だろうが。 人に訊くことじゃねえだろ・・・。
>>882 ありがとうございましすー。
別に誰かに見せるわけでもないし、
特にないならコメントは勝手に自分だけわかるように略記して問題ないですね
889 :
デフォルトの名無しさん :2007/06/13(水) 08:46:49
>>878 JR束はwin鯖+C#がおおいぞ。えきねっとなんかそうだと思う。
新幹線の運行管理にまで使っているらしい。束の情報子会社なんてどお?
そんな新幹線、個人的には(((((((( ;゚Д゚))))))))ガクガクブルブルガタガタブルブルだが
クライアントとしてはいいと思うよ うちもDBにC++とjavaだったけど端末なんてWinばっかだし C#でできるものはそっちでやるようにしてるとこ
log4netで質問があります。 現在ログ出力自体はできているのですが、 ログの出力先・ファイル名の設定を xmlでは無くiniファイルで設定したい、 という要望があります。 ソースを改造する手もありますが、 もっと簡単に実現できないものでしょうか。
Processで質問です Processで起動したプログラムが異常終了したとき Microsoftに送信しますか?だとかデバッグする?みたいに 聞いてくるウィンドウがでますよね? あのウィンドウをでなくして、エラーを起こしたプログラムが即終了するようにする 方法ってありますか?
>>892 Application.Run(new Form1());
をtry..catchで囲めばいいんじゃないっけ…(自信はない)。
>>892 は他のプロセスの場合が異常終了した場合のことを言ってるのだろだろ
仮にそうでなくとも
>>893 のは問題外
あれは設定でオフにできるけど、自分が作ったやつだけ止めたいってことじゃないの?
>>893-895 情報ありがとうございます
program1.exe
program2.exe
があって、program1.exeからProcessでprogram2.exeを呼び出すんですが
program2.exeがエラー起こしておわっちゃうと、ウィンドウがでてそこで
program1が延々と待ってしまうので、それを避けたいのです
今のところ思いつくのはprogram2のなかでtryつかっちゃうことですが
それだと自分がつくったものじゃないときに対応できないので
program1側でなんとかできないかなと思って
>>895 さん、設定でオフってWindowsの設定でできるんでしょうか?
それでもOKです
どうすればいいんでしょ?おしえてください
オフにするのは、マイコンピュータのプロパティの詳細設定のエラー報告を設定するんだけど プログラムからならサービスの[Error Reporting Service]を止めちゃうとか
899 :
892 :2007/06/13(水) 12:54:51
>>897 ありがとうございました
希望通りになりました
>>898 新たな情報ありがとうございます
プログラムでコントロールできるんですね
でもボクの能力の限界を超えているようです
やりかたわかんないTT
>>899 Process myExe = Process.Start("sc stop ersvc");
myExe.WaitForExit();
これでどう?やったことねえけどwwwww
コマンドプロンプトで
sc stop ersvc
とうてばXPなら[Error Reporting Service]をとめれる
901 :
892 :2007/06/13(水) 14:11:02
まあサービスはアドミン権限いるだろうし、いきなり止めるのもあれだからなあ
>>896 そのものずばりのAPIがあったはずだから探してみれ
プロセス内からはSetErrorModeで設定できたんじゃないかな。 外部からは知らんけど、プロセス起動時に設定できてもいいような気はする。
905 :
904 :2007/06/13(水) 14:28:31
906 :
892 :2007/06/13(水) 15:19:13
>>905 情報ありです
下のようなことやってみたけどだめでした
897さんの方法でいっときます
ではでは〜
using System.Runtime.InteropServices;
・・・
[DllImport("kernel32.dll")]
extern static uint SetErrorMode(uint uMode);
・・・
uint oldmode = SetErrorMode(0x0001とかいろいろ);
・・・
Process p = Process.Start("・・・・");
p.WaitForExit();
・・・
SetErrorMode(oldmode);
あれ?継承クラスからだとベースクラスで宣言してるイベントRaiseできないんだっけ?
無理 public event EventHandler MyEvent; protected void OnMyEvent(object sender, EventArgs e){略} のパターンに従え
909 :
デフォルトの名無しさん :2007/06/13(水) 17:55:30
WinXP VS2005 C# で質問があります。 Cのprintf("%3d",hoge)のような処理は、どのようにすれば実現できます でしょうか? string.Format("{0:000}",hoge)だと"0"が含まれてしまいますし、 ブランクは設定できないようですし、ワタシとても困てるね。 宜しくお願いします。
右詰め3桁数字なら、{0, 3} じゃないか?
911 :
909 :2007/06/13(水) 18:10:51
>>910 できました…
こんな簡単に…
ありがとうございます
てすと
>>911 ちったぁ、ドキュメント読め! そこのフナムシ!
なんか下水の底のリケッチアが騒いでるな
916 :
913 :2007/06/14(木) 01:33:50
自分で自分を罵ればいいじゃん
フナムシお触り禁止
やればできるは、できないと同義。
そうでもない やってないことは確かだが
int も double も入れられる配列を作ろうとして、 ValueType[] a = new int[] { 0, 1, 2 }; としましたが、暗黙的に変換できませんと、エラーがでました。 こういうことってできないですか?
ValueType[] a = new ValueType[] { 0, 1, 2 }; じゃないの?
int も double も入れられる配列って何に使うの? 別の配列にするより、いちいち要素ごとに型の心配する方が面倒だと思うんだけど
926 :
デフォルトの名無しさん :2007/06/14(木) 16:19:45
>>925 スクリプト言語だと、あたり前にできたりするが、C#はできない。
そういうこと。
整数もdoubleであらわしゃいいじゃん。
スクリプト言語だからじゃないだろ
C#で書かれたHTTPD(Webサーバ)って何かありませんか? 昔見たことがあるのですが、ブックマークしてなくて忘れてしまいましたorz
普通はオブジェクトの配列にしてしまうだろう。 object [] a = new object[] { 1, 2, 3, 4.2, "abc" } objectをValueTypeにしてもboxingは発生してる。 違いは上の例でstringがエラーになる程度のこと。 オブジェクトの配列はリフレクションでよく見かけるね。
struct Int32OrDouble{ int intValue; double doubleValue; bool isInt; }//無駄が多すぎるな。もうちょっといいアイデアない?
>>931 object でよくね?
どうしてもというなら、
[StructLayout(LayoutKind.Explicit)] と [FieldOffset(0)] 属性使えば
C の union みたいな事できる。
933 :
デフォルトの名無しさん :2007/06/14(木) 18:39:32
int と double なら double に統一すれば精度的にも問題ないな
>>931 それをインターフェイスにして、
* intを引数にとるコンストラクタから作る実態はintの構造体と
* doubleを引数にとるコンストラクタから作る実態はdoubleの構造体
の二つにインプリメントさせればいいんじゃない?
それじゃ意味ないだろ、この流れでは。
この流れってどんな流れよ
効率悪くて無駄が多いのが嫌って流れじゃなかったの?
ジェネリックじゃいかんの?
C#ってなんで int i; { int i; } ってできないの?
>>942 意味不明。
名前が被ってるってことか?
一番目と2ばんめのiの区別はどうするつもりだ
ここはふらっとじゃない。
947 :
デフォルトの名無しさん :2007/06/14(木) 22:38:34
すみません。C#で前回にSimpleCalcというソリューションをつくりまして それを開こうとおもって、SimpleCalc.slnファイルをクリックしたらソリューションは 開けましたが、ソースコードの画面で、フォームのデザイン画面の表示の仕方がわかりません。 おしえてください。よろしくお願いします。
>>944 意味不明ってなんだよ。
Cでは
int testfunc(int n){
int i=n*n,j=n+n;
if(n%2){ return n; }
{
int i=n*n*n;
if(i%5==0){ j+=n; }
}
return j;
}
としてもエラーにはならない。
C++でメンバ関数の引数名とメンバそのものが被ってもエラーにならないのと同じだ。
949 :
947 :2007/06/14(木) 22:40:03
自己解決しました。すみませんでした。
>>947 ソリューションエクスプローラーから対象のものをダブルクリックで開かない?
右クリックでデザイナの表示でもいいが
>>950 例だから意味なんてない。
俺は子スコープで名前が同じ変数を使いたいだけなんだ。
for(int i=0;i<hoge;i++){
for(int i=0;i<huga;i++){//実行回数が問題でトップレベルのforなんて関係ないね
func();
}
}
>>952 エスパーを召還してるのは942じゃなくてアンタでしょw
>>942 は別に意味不明じゃないぞ
.Net厨はCさえ書けないゆとりという事が証明された。
958 :
947 :2007/06/14(木) 22:48:03
>>957 なんで俺が高校生って分かったの?
嘘だけど。
中学生かと思った
おーい、フナムシの出番だぞ〜
うるせぇ、フナムシぶつけんぞ!!
ふらっとより低レベルなスレw
Cを知らないことを白状するけど、
>>954 みたいな書き方をCでしたとき
スコープの外のiを中で使いたいときはどうすんの?
つーか使えないこと前提なの?
使わないことを前提にシャドウしてるんだろ。 使う必要があるなら別の名前にする。
あんなコード書いたら即日首にするよ
小一時間問い詰める
{ int i; } { int i; } したいときはある。
それはスコープ外れてからの宣言だし何の問題もないでしょ。
つか、for(int i; ...) { ... } for(int i; ...) { ... } がそれでしょ。 何も問題ない。
そのfor文の int がそのスコープの中に入ったのは後になってからだけどな。
スコープじゃねー、ブロック
そりゃC++だけだ
あー、ここC#スレだっけ
C++ の最初の規格ができた時には既にスコープの中に入ってたらしいがな。 入ってなかったのは初期のドラフト時代のみらしい。
VC++1.0の時は入ってなかったな
アホみたいな話題で盛り上がってないで次スレ〜
フナムシってそこはかとなくキモいよね。
980 :
デフォルトの名無しさん :2007/06/16(土) 01:13:58
・goto文でもりあがったことがある
981 :
デフォルトの名無しさん :2007/06/16(土) 14:23:37
VCが仕様をみたしてなかったんでは。 ところで { int i; } { { int i; } } これもできないよね。
できるだろ。
>>981 >VCが仕様をみたしてなかったんでは。
当時のこと知らないなら黙ってろ。
まだ策定されてなかったんだよ。
984 :
デフォルトの名無しさん :2007/06/16(土) 14:36:40
あれできた
>>983 知らないけど、割と最近までそういう製品だった印象があるよ
境目は1998年だね。
VC6 だと for (int i の i のスコープは外に出るな だがここは C# スレだ
>>984 それはVC++6.0の話だね。
あれはコンパイルスイッチをつけないと、新しい仕様にならなかった。
MSは特にそうなのだが、互換を考えずに後から追加になった仕様や標準にはどこも冷淡だからね。 forに関しては使いたければこうすればいいということだったが未だに理屈が分からん。 #define for(x) if(0);else for(x) あとC#に話を戻すけどC++から削った要素に8進数表記がある。 これに対する苦情はあまり聞かないけどどう? 010 はCだと8 だが C#だと10になる。 0377が使いたくてしょうがない人とか居る?
>>989 ゼロが頭につくと8進表記扱いになるって知らなきゃ
即バグに繋がるような問題だしねぇ。
化石級のunixエンジニアにはオクタルに染まってるのもいたが最近はみない。
そもそも8進数の利点が分からん 16進や2進ならバイト表現に便利なのはわかるんだが
8進表記ってもともとの目的は何なの? ニブルが3ビットでバイトが6ビットみたいな環境とかでもあったんかな
昔は24/36bitワードマシンとかあったじゃん。
属性だろ
2進数と16進数の中間。ビット表現に使う 数字だけで使えるしね
二進数表記ってどうやればいいの? 列挙型で使いたいんだが
ここでロートルの俺が一言。 昔はCPUの命令体系が8進数ベースだったんじゃよ。
>>997 リテラル二進表記はない。
16進で書いて後ろにコメント付けとけ。
>>997 boolを32個ならべる
↓
それはそれとして
卵かけ御飯をおいしくいただく
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。