C♯, C#相談室 Part35
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/03(金) 03:07:45前スレ
C♯, C#相談室 Part34
http://pc8.2ch.net/test/read.cgi/tech/1157549657/
過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0409デフォルトの名無しさん
2006/11/19(日) 15:24:10XPはログオンに時間がかかるがVistaは確かにかなり速い。
0410デフォルトの名無しさん
2006/11/19(日) 15:38:06そういえば、Vista対応のために、XPからの変更点のまとめってありませんか?
システムフォルダがお引っ越しor内部で勝手にリンクするというのは聞いたんですが。
0411デフォルトの名無しさん
2006/11/19(日) 15:38:583年後位には主流になるのかねぇ・・・
0412デフォルトの名無しさん
2006/11/19(日) 16:26:050413デフォルトの名無しさん
2006/11/19(日) 21:04:14SuperFetchが効いてるんじゃね?重量級のアプリにはかなり
効くようだ。VSとか。
メモリたくさんつまないと駄目だけど。
0414405
2006/11/19(日) 21:23:29メモリ2GB積んでる。
無駄にオーバースペックなもの買ってみた。
要するに、JIT が早いのは単にプロセッサ性能、
動作が速いのは .NET Framework のコンポーネントが
SuperFetch であらかじめメモリ上にロードされてるから
ってことでいいのかな?
0415デフォルトの名無しさん
2006/11/19(日) 21:48:04なんだかね
0416デフォルトの名無しさん
2006/11/19(日) 23:28:29パソコンを使っている人の大半はあなたみたいなヲタクではありません。
大半の人に使っていただくためには屁理屈こねて遅くないんだよなんていってて・・・
0417デフォルトの名無しさん
2006/11/19(日) 23:33:11415じゃないけど、開発者する人間なら…
0418417
2006/11/19(日) 23:33:49○ 開発する人間
0419デフォルトの名無しさん
2006/11/19(日) 23:36:370420デフォルトの名無しさん
2006/11/19(日) 23:57:280421デフォルトの名無しさん
2006/11/20(月) 00:13:350422395
2006/11/20(月) 08:42:22pentium4 1.7GHz
C#(JIT):16593.75ms
C(SSE2):19250ms
C(SSE):15031.25ms
C(FPU):20125ms
athlon64 2.4GHz
C#(JIT):4296.875ms
C(SSE2):3640.625ms
C(SSE):3796.875ms
C(FPU):6859.375ms
0423デフォルトの名無しさん
2006/11/20(月) 10:33:07もう遅いかもしれないけど、そのセルを編集中かどうかで変わってくる。
編集中はセルのEditingControlがイベントを受け取るので、
そっちで処理しないといけない。
0424デフォルトの名無しさん
2006/11/20(月) 10:43:03普通のプログラマなら、遅いのが、
・不適切なアルゴリズム選択による遅さなのか (ex. クイックソートとバブルソート、ハッシュ探索と線形探索)
・設計のまずさに起因する遅さなのか
・他のサブシステムに起因する遅さなのか (ネットワーク、ウィンドウシステム、ディスクI/O、など)
・本当に、言語による遅さなのか
などを、経験なり、思考なり、プロファイラ使うなりして判断できるが、
ヘボプログラマ程、遅さの原因を考えることなく、言語のせいにする。
ましてや、自分のアルゴリズム選択ミスだなんて考えもしない。
最終的には、CPUが遅い、とかぬかしだす。
0425デフォルトの名無しさん
2006/11/20(月) 11:04:14Form上のLabelなどの表示を切り替える際に、一度Labelをクリアしてから値代入してるのですが
0426425
2006/11/20(月) 11:04:56途中で送信してしまいました・・・
0427デフォルトの名無しさん
2006/11/20(月) 11:08:420428デフォルトの名無しさん
2006/11/20(月) 11:12:000430デフォルトの名無しさん
2006/11/20(月) 13:42:37MsiGetFileHash のような関数を探しているのですが、見つけられなくて…(´д`;
0431デフォルトの名無しさん
2006/11/20(月) 15:03:37using System.Security.Cryptography;
かな?
0432デフォルトの名無しさん
2006/11/20(月) 15:04:57MD5CryptoServiceProviderにFileStreamくわせるか、かな?
0434デフォルトの名無しさん
2006/11/20(月) 21:39:41現在既に起動しているIE6.0のWindowハンドルを取得し、その上に線の描画を行おうとしています。
IEのWindowハンドルは取得できたのですが、そこから線を描画する方法が分かりません。
どの様な解決方法があるでしょうか?
どなたかご教授下さい。
0435デフォルトの名無しさん
2006/11/20(月) 21:52:13GetDC / CreatePen / SelectObject / LineTo 辺りか?
ただし 434 が望んでる結果になるとは限らない。
0436デフォルトの名無しさん
2006/11/20(月) 22:00:290437デフォルトの名無しさん
2006/11/20(月) 22:04:10>>436の言う通り、再描画が発生したら消えるね
0438デフォルトの名無しさん
2006/11/20(月) 22:36:26透明なFormWindowを作成してそこに線を描画し、IEのWindowの上に被せるという
方法も考えたんですけども。。。
>>435 さんと >>437 さんの方法は同じ方法なんでしょうか?
0439デフォルトの名無しさん
2006/11/20(月) 22:41:03private static extern IntPtr GetWindowDC( IntPtr handle );
[DllImport( "user32.dll" )]
private static extern IntPtr ReleaseDC( IntPtr hWnd, IntPtr hDC );
private void button1_Click( object sender, EventArgs e )
{
IntPtr hWnd = IEのウインドウハンドル
IntPtr hDC = GetWindowDC( hWnd );// またはGetDC
Graphics g = Graphics.FromHdc( hDC );
//好きに描画
g.FillRectangle( SystemBrushes.ControlText, new Rectangle( 0, 0, 100, 100 ) );
g.Dispose();
ReleaseDC( hWnd, hDC );
}
0440デフォルトの名無しさん
2006/11/20(月) 23:34:21>>439さん。有難う御座います。
この方法でIEのWindowに描画することが出来ました。
ここから線の再描画をする方法を採ってみようと思います。
0441デフォルトの名無しさん
2006/11/21(火) 00:00:330442デフォルトの名無しさん
2006/11/21(火) 00:13:410443デフォルトの名無しさん
2006/11/21(火) 00:35:50動画ファイルをDivXで圧縮するツールを
作りたいと思うのですが、.NET1.1 + C#では
どのようにしたらいいのか、どなたかヒントを
いただけませんか。
やりたいことは
複数のデジカメ動画を検索し
DivXで圧縮し
あるルールでファイル名を付け
タイムスタンプを変換元ファイルに合わせる
という感じです。
「DivXで圧縮し」以外の部分はできています。
よろしくお願いします。
0444デフォルトの名無しさん
2006/11/21(火) 00:51:420445デフォルトの名無しさん
2006/11/21(火) 01:07:45DirectShow叩けばいいんじゃないか?
0446デフォルトの名無しさん
2006/11/21(火) 08:09:55どっちがやりやすいか調べて試してみます。
ありがとうございました。
0447デフォルトの名無しさん
2006/11/21(火) 15:59:46更に、全てのリスト内の文字列の編集処理後、メインの関数を抜けたいと考えています。
リストにしているのは文字列の順番を記憶したいからです。
以下のThreadMethodように引数を持つスレッドを作成したい場合、
ThreadPoolを使うと良いそうなのですが、joinのような待ちの実現方法が分かりませんでした。
ThreadPoolでの待ちの実現について、また、ThreadPoolを使わなくてもできるよ。そもそもリストじゃなくてこうすれば効率が良い!など、アドバイスいただければと思います。
public bool MainMethod( .... )
{
ArrayList arrayList = new ArrayList(); // (仮)
// arrayListの個々の要素に文字列を生成する処理
WaitCallback waitCallback = new WaitCallback(ThreadMethod);// コールバック作成
// arrayList要素数分ループ
for(int i = 0;i < arrayList.Count; i++)
{
// スレッドでarrayListの文字を更に改変する処理
ThreadPool.QueueUserWorkItem(waitCallback, arrayList[i]);
}
// 待ち
return true;
}
public void ThreadMethod(object aStr)
{
// aStrの編集
}
0448デフォルトの名無しさん
2006/11/21(火) 16:35:54joinするんだったらメインスレッドがブロックされるから別スレッドにする意味がないのでは?
0449デフォルトの名無しさん
2006/11/21(火) 16:37:11だって終わるまで待ちたいんでしょ?
どうしてもスレッド使いたいなら、
Thread.Startで引数にArrayListそのものを渡してそっちでループしたら?
あと、.net2.0ならList<string>使った方がいいんじゃ?
0450デフォルトの名無しさん
2006/11/21(火) 17:04:55Jobについては下位Jobを持つことができ親Jobは下位Jobがすべて終わった場合にそのJobが終わったことになる。
0451デフォルトの名無しさん
2006/11/21(火) 17:27:510452450
2006/11/21(火) 21:48:540453デフォルトの名無しさん
2006/11/21(火) 21:54:07オナニーは別な所でやってください
0454450
2006/11/21(火) 22:02:40/⌒ヽ)
i三 ∪
○三 |
(/~∪
三三
三三
三三三
0455デフォルトの名無しさん
2006/11/21(火) 23:37:30通常右の部分は必要ないので左の部分がFormいっぱいに表示されていて
なんらかのトリガでFormの半分づつに左右が表示されるようにするには
どうしたらいいですか?
C#
0456デフォルトの名無しさん
2006/11/21(火) 23:41:060457デフォルトの名無しさん
2006/11/21(火) 23:41:170458デフォルトの名無しさん
2006/11/21(火) 23:42:500459デフォルトの名無しさん
2006/11/21(火) 23:45:30できるとききました
0460デフォルトの名無しさん
2006/11/21(火) 23:48:030461デフォルトの名無しさん
2006/11/21(火) 23:50:17やめとけ。えくりぷすなんて、java以外で役にややない。
0462デフォルトの名無しさん
2006/11/22(水) 00:06:33http://www.improve-technologies.com/alpha/esharp/
「eclipse csharp」で見つかったけど。
0463デフォルトの名無しさん
2006/11/22(水) 00:10:22まりが�d♪
>>461
使いやすいよp使えば使うほどはまるしするめみたいなもんだおp
0464デフォルトの名無しさん
2006/11/22(水) 02:38:47動けばイイ程度のものなら俺でも作れるが、数十万、数百万出して購入するユーザを
納得させるのは難しそう
0465デフォルトの名無しさん
2006/11/22(水) 07:32:22でも速度以外の面では遜色ないもの作れると思うよ。
0466デフォルトの名無しさん
2006/11/22(水) 07:57:360468デフォルトの名無しさん
2006/11/22(水) 08:20:0920年前のプログラマに
「C言語つか、コンパイラで吐き出したコードでファミコンのアクションゲームって作れるの?」
と質問するのと変わらん。
0469デフォルトの名無しさん
2006/11/22(水) 09:30:500470デフォルトの名無しさん
2006/11/22(水) 10:03:42BVEはvb.netで作られている
0471デフォルトの名無しさん
2006/11/22(水) 10:32:42いや、本当に速度が必要なところだけC++で書いて、P/Invokeすれば良いだけの
話だろ。
確かに、グラフィックス関係だと、テクスチャのような大量のデータをハンドリングしないといけないので、
それを、マネージドとアンマネージドの間で橋渡しするあたりで、工夫がいると思うけど。
0472447
2006/11/22(水) 12:15:13ありがとうございます。
リストの先頭から順番に処理するとかなり時間かかったので、
同時にスタートさせれば多少なり早く処理がおわるかなぁ。とか思ってました。
とりあえずスレッドは意味がないそうなのでやめて、Listでやってみます。
0473デフォルトの名無しさん
2006/11/22(水) 12:21:09とりあえずコンピュータの仕組みをもうちょっと理解したほうがいいと思う
0474デフォルトの名無しさん
2006/11/22(水) 15:20:08http://support.microsoft.com/kb/316384/
wordオートメーションを作ろうと思って、
これを実行しました。
そしたら、このようなエラーがでました。
http://kasarfa.com/modules/php/bbs/ubbs/image/1164176285.gif
このエラーを解決するのにいろいろぐぐりましたが、
まったくわからずに、途方にくれております。
よろしくお願い申し上げます。
0475474
2006/11/22(水) 15:36:25今日の朝は、ちゃんとオートメーションできてました。
今日の午後から上のバグがでるようになりました。
お昼には、パソコンにインストールされていた
ノートンアンチウィルスをアンインストールしました。
出来事といったら、このくらいです。
word2003を再インストールしてもなおりませんでした。
WindowsXPsp2
Word2003
0476デフォルトの名無しさん
2006/11/22(水) 15:51:140477デフォルトの名無しさん
2006/11/22(水) 16:34:130478デフォルトの名無しさん
2006/11/22(水) 16:36:480479デフォルトの名無しさん
2006/11/22(水) 16:40:000480デフォルトの名無しさん
2006/11/22(水) 16:42:230481474
2006/11/22(水) 16:44:02レスありがとう。
確かにwordへの参照をやり直せばうまくいくような気がしたので、
上で投稿する前に、ご指摘のことは既に試しておりました。
そして、結果は芳しくありませんでした。
0482デフォルトの名無しさん
2006/11/22(水) 16:44:42>>479
0483デフォルトの名無しさん
2006/11/22(水) 19:54:190484デフォルトの名無しさん
2006/11/22(水) 20:00:100485デフォルトの名無しさん
2006/11/22(水) 21:00:510486デフォルトの名無しさん
2006/11/22(水) 21:29:330487デフォルトの名無しさん
2006/11/22(水) 21:39:42GetDCしてデバコンに自前で描画すればイイだけのことでは?
0488デフォルトの名無しさん
2006/11/22(水) 21:55:17ListViewGroup ってコントロールじゃないし
ListViewのオーナー泥でアイテムのグループみて自前でやる。
0489デフォルトの名無しさん
2006/11/22(水) 22:04:150490デフォルトの名無しさん
2006/11/23(木) 10:39:26DesignMode プロパティが true にならない現象がおきます
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.All)]
public class ToolStripMenuItemDerived : ToolStripMenuItem{
public ToolStripMenuItemDerived() : base(){
base.Text = "aaa";
if (base.DesignMode) return;
base.Text = "bbb";
}
}
上記の ToolStripMenuItemDerived をデザイナで貼り付けたときには
aaa と表示されずに bbb と表示されてしまいます
仕方がないので
base.Text = "aaa";
#if ! DEBUG
base.Text = "bbb";
#endif
としデザイナを使うときはコンフィギュレーションを Debug にしています
もっとスマートな方法はないものでしょうか
0491デフォルトの名無しさん
2006/11/23(木) 10:40:36ワロタw
0492デフォルトの名無しさん
2006/11/23(木) 10:49:01そんなコーディングがまず必要なのかが(ry
ttp://support.microsoft.com/kb/839202/ja
0493デフォルトの名無しさん
2006/11/23(木) 13:14:10LicenseManager.CurrentContext.UsageMode == LicenseUsageMode.Designtimeとかでうまくいかない?
0494デフォルトの名無しさん
2006/11/24(金) 12:11:230495デフォルトの名無しさん
2006/11/24(金) 12:38:220496デフォルトの名無しさん
2006/11/24(金) 12:58:310497デフォルトの名無しさん
2006/11/24(金) 14:32:01// TCPリスナーを生成する
_tcpListener = new TcpListener(ip, portnb);
// TCPリスナーを開く
_tcpListener.Start();
// 保留中の接続要求があるかどうかを確認する
if (_tcpListener.Pending() == true)
{
// クライアントからの接続要求を受け入れる
_tcpClient = _tcpListener.AcceptTcpClient();
// KeepAliveの設定
_tcpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 30000);
}
上記のようにサーバー側でクライアントの接続を受け入れて
TCPにて伝文の送受信を行っています。
中継装置(HUB)を経由して接続している時、クライアントのLANケーブル
が抜けた(切断)されたことを検出する為、KeepAliveの機能を用いる
方向で実装していますが・・・検出できませんでした。
おそらくKeepAliveの使い方が悪いと思うのですが・・・どなたかご存知ないでしょうか?
0498デフォルトの名無しさん
2006/11/24(金) 15:19:150499デフォルトの名無しさん
2006/11/24(金) 18:24:14byte[] inBuffer = new byte[12];
BitConverter.GetBytes(1).CopyTo(inBuffer, 0); // スイッチ
BitConverter.GetBytes(30000).CopyTo(inBuffer, 4); // Interval
_tcpClient.Client.IOControl(IOControlCode.KeepAliveValues, inBuffer, null);
上記の方法で30秒後に切断を検出できました。
DOS窓のnetstatでもidolになりました。
0500デフォルトの名無しさん
2006/11/24(金) 18:43:360501デフォルトの名無しさん
2006/11/24(金) 18:48:33typeof(List<>).FullName: System.Collections.Generic.List`1
typeof(Dictionary<,>).FullName: System.Collections.Generic.Dictionary`2
0502デフォルトの名無しさん
2006/11/24(金) 19:20:54DataRowのインスタンスが2つあって、これらが等しいか(各列の値がすべて等しいか)
を調べるにはどうすればよいのでしょう?
DataTableに、DataRowインスタンスを追加するときに、同じ内容のものがあった場合は、
追加しない、という処理を行おうと思ってます。
0503デフォルトの名無しさん
2006/11/24(金) 20:34:430504502
2006/11/24(金) 22:02:49とりあえず、Rows[n].ItemArrayを一個一個しらべて
すべて同じだったら等しい
という方法ではできましたけど、
ItemArrayを配列として比較するとダメなんですよね。
RowとRowのオブジェクト同士を比較できる便利な関数とかってないものか。
0505デフォルトの名無しさん
2006/11/24(金) 22:13:120506デフォルトの名無しさん
2006/11/24(金) 22:15:300507デフォルトの名無しさん
2006/11/24(金) 22:25:35その、「RowとRowのオブジェクト同士を比較できる便利な関数」というのも
結局同じことをするんじゃね?
それとも、Cellの内容が変わるたびに中身を構造体にでも突っ込んで
隠しCellにGetHashCodeでハッシュもっておくとかしたら?
面倒くさそうだけど。
0508デフォルトの名無しさん
2006/11/24(金) 23:02:11Rows.AddしたときにConstraintExceptionをcatchするとか
■ このスレッドは過去ログ倉庫に格納されています