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


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

C♯, C#相談室 Part34



1 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 20:45:59 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C♯, C#相談室 Part34
pc8.2ch.net/test/read.cgi/tech/1157549657/

過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。

656 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:57:24 ]
www.atmarkit.co.jp/fdotnet/basics/adonet04/adonet04_04.html

657 名前:655 mailto:sage [2008/01/14(月) 00:05:49 ]
>>656
理解が足りてませんでした・・

ありがとうございました

658 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:01:58 ]
質問です

SizeChangedイベントをハンドルしてInvalidateを呼び出して画面全体を再描画したいんですが
領域全体が無効化→背景色クリアが入ってしまい、その後に全体を書くので偉くちらつきます。
で、この背景色クリアを無効化したいんですが、どのようにしたら良いですか?

背景色クリアに関してはWinAPIで叩いてたころは確か
ブラシを入れないとか、Invalidateの引数でRedrawするかしないかを指定できたと思うんですが…

よろしくお願いします。

659 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:13:19 ]
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer,true);
と設定してダブルバッファリングすればいい

660 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:18:12 ]
いやダブルバッファするかどうかは別問題でしょ。
>>658についてはResizeRedrawを有効にすればOKだと思うけど。

なんか>>658はあまりよくわかってなさそうだから一応補足すると、
これは要するにいちいちInvalidateしなくてよくなるって意味ね。

661 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:21:52 ]
用途によって違うだろ

662 名前:658 mailto:sage [2008/01/14(月) 13:24:59 ]
>>660
ResizeRedraw=trueにしても駄目でした。
おっしゃるとおり、いちいちInvalidateしなくてよくなるんですが、
単に勝手にInvalidateを呼び出しているだけみたいですね。

結局ですが、多分.NETのInvalidateの実装が
InvalidateRect( m_hWnd, NULL, TRUE );
みたいにされちゃってるんだと思ったんで、
直接user32.dllのInvalidateRectをDllImportして
bEraseをFALSEで呼び出したらブラシのクリアが無くなりました。

ご返信していただいた方ありがとうございました。

663 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 15:07:20 ]
>>658
なにもしない OnPaintBackground は?

664 名前:658 mailto:sage [2008/01/14(月) 16:11:11 ]
>>663
.NET的にはそれが一番よさそうな実装方法ですね…
ありがとうございます。そちらのコードに修正します。



665 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 11:05:58 ]
WM_ERASEBKGND をいじった事なかったのか

666 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 07:35:08 ]
すみませんが教えてください。C#とC++は、.NETで行っても処理速度は
あくまでも同じなのでしょうか?それとも、C++の方が圧倒的に早いのでしょうか?
C#とVBでは処理速度は描画も含めて同じだと思いますが、C++では直接
Win32APIで動かしていて高速動作するようになっているのでしょうか?
よろしくお願いします。

667 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:43:03 ]
>>666
.NETが扱えるのはC++ではなくC++/CLI
C++/CLIが吐き出す中間コードはC#,VBと同じ
よって速度は同じ

668 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:33:13 ]
C++/CLIはネイティブコードを埋め込める

669 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:07:18 ]
>>668
C#もunmanaged使えば同じじゃないの?

670 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:18:37 ]
同じ内容を書けば同じ速さになるはずということで

671 名前:666 mailto:sage [2008/01/17(木) 11:21:15 ]
>>667-669
解説ありがとうございます。
たとえば、Windowsのエクスプローラはフォルダのフォーカス移動に伴う
ファイル表示でもものすごく高速に実行され、画面の描画もめちゃくちゃ
瞬時に行われ、ノートPCなどの描画が比較的遅いPCですと.NETの
Formアプリケーションなどとはけっこう速度差を体感します。レインボウ
のような現象も顕著に出ていて、ネイティブのアプリケーションとでは
ものすごく遅い感じが否めませんでした。

こうした差は、C++/CLIを使って、すべてをネイティブコードにコンパイル
してしまうと、たとえばエクスプローラ並みにすばらしく高速で動くように
体感できるようになるということなのでしょうか。(長くてすみません)

672 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:22:25 ]
>>669
C#でunmanagedは使えないだろ

673 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:27:32 ]
>>671
それはWindows.Formsが遅いだけ。

C++/CLIを使っても同じGUIライブラリを使う限り、もっさりするのは換わらない

674 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:33:04 ]
>>673
なるほど、そうだったんですか。
ということは、C++/CLIで、Formsを使わずに何かネイティブのGUI処理をする
方法を使う(MFCでしょうか、よくは知らないのですが)などすれば、
エクスプローラ並みの高速処理が実現できるということでしょうか、
そしてそういうことはC#やVBでは実現できないと・・・、この辺がよくわかりません、
よろしくお願いします。



675 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:04:06 ]
>>674
C# と GDI+ でも、あんまり Forms の世話にならないで自前で描画する
大型のコントロール等書いて使えばそこそこ高速になるよ。

下手に Forms で UI 書くより、ブラウザ埋め込んで Ajax でもした方が
高速になるケースもあるだろうし (ブラウザはレンダリングが結構速いから・・・)。

>この辺がよくわかりません
「ネイティブ」の意味が分からないということ?

676 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:10:02 ]
Forms はなんであんなに重いのかね?

677 名前:デフォルトの名無しさん [2008/01/17(木) 12:37:29 ]
>>675
たびたびすみません。

>自前で描画する大型のコントロール等書いて

これは要するに、Paintイベントなどでの処理を描くということでしょうか。

>「ネイティブ」の意味が分からないということ?

「自前で描画する大型のコントロール等」という場合に、そこに.NETFramework
のクラスで描画をするだけでよくて、いちいちAPIを使うことなく高速化できるという
ことでしょうか?

678 名前:666 [2008/01/17(木) 12:41:00 ]
名前入れるの忘れました。

そのようにしてコントロールを高速化した場合、たとえば現在Form の右下を
つまんでリサイズすると、Formのサイズ変更がやたらと遅くてボーダーの移動が
ぱらぱらと目に見えて動きます。こういったことも高速になるでしょうか?

679 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:44:57 ]
GDIのAPIを直接叩くGraphicsクラスみたいなのは作ったことあるぜ

680 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:45:19 ]
たとえばTextBoxを100個WinFormに貼り付けて使うより、
普段はTextBoxの「ハリボテ」を100個描画しておいてユーザーがマウスポインタで
クリックしたときだけ本物のTextBoxを該当位置にひとつだけ表示するような
コントロールを自作した方が早いってことじゃない?

でもこの手のコントロールの自作ってかなり面倒なんだよね。
情報すくないから手探りでいろいろ調べる必要があったり。

681 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:54:09 ]
>>678
そう。
同時にOnPaintBackgroundで一瞬背景色で塗られるなどのUI 的に不快な動作も直す。
Panel を Dock させてあれこれやるより、OnSizeChanged 等で自前でレイアウトする方が速いし。

ただ GDI+ の遅さは非力なPCでは如何ともしがたいところもあるので、低スペックPCでも
超軽快に動くようにしたいなら C++ でネイティブでやるより無いと思う。

682 名前:666 [2008/01/17(木) 13:03:35 ]
>>679-681
いろいろご指導ありがとうございます!

>>680
>同時にOnPaintBackgroundで一瞬背景色で塗られるなどのUI 的に不快な動作も直す。

あの動きも改善方法があったんですね、うれしいです。自分でも実装できる
かどうかわかりませんが勉強してみます!

>Panel を Dock させてあれこれやるより、OnSizeChanged 等で自前でレイアウトする方が速いし。

このPanelのDockやDocking機能のコントロ-ルは使っていました。
そうすることなく自分でコントロールの移動やリサイズをさせた方が早い
のですね。いまからそれやると大変かとも思いましたが、今後の参考に致します!
勉強になります、ご指導ありがとうございました!!

683 名前:666 [2008/01/17(木) 13:07:33 ]
>>682(訂正)
すみませんリンク先まちがえました。訂正>>680>>681
>ただ GDI+ の遅さは非力なPCでは如何ともしがたいところもあるので、低スペックPCでも
>超軽快に動くようにしたいなら C++ でネイティブでやるより無いと思う。
この件も頭に置いておきます。どうもでした!


684 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:54:33 ]
フォルダのタイムスタンプについて教えてください。サブフォルダを追加してそこに
ファイルを作成して編集したりしてあるフォルダの中身が変化していましたが、
なぜかそのフォルダのタイムスタンプがその変更よりも前のままになっていました。
こうならずに、更新日時が反映されている場合もありました。これは何か更新される
ために必要な条件のようなものがあってそれが異なっているためなのでしょうか?




685 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 10:40:29 ]
そりゃディレクトリエントリが更新された時刻だもの

686 名前:684 [2008/01/18(金) 15:57:46 ]
>>685
そうだったのですか、ということは内部のサブフォルダ内の何かのファイルが変更された
としてもそれの時刻は繁栄されないのですね。わかりました。

すみませんがもう一つお願いします。

アプリケーションのアイコンを探すときにレジストリ内のDefaultIconキーの値のところに、
次のようにマイナスの番号が入っている場合、shell32.dllのファイルの中の番号としては
使えないのでしょうか?kernel32.dllの LoadLibraryExA で検索してアイコンを見つける
ときにも使えるのでしょうか?

HKEY_CLASSES_ROOT\VBSFile\DefaultIcon\"(default)" = "shell32.dll,-298"
HKEY_CLASSES_ROOT\txtfile\DefaultIcon\"(default)" = "shell32.dll,-16"

(これでサウンドの場合の C:\WINDOWS\system32\wmploc.dll,-734 の-734 を
そのまま使ったところ、音符マークのアイコンとは別のものが来たのでした)


687 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:11:30 ]
わからんが、wmploc.dllを開いてみたら 734 に音符のアイコン入ってたけど。
マイナスは別の意味を持たせてるのかも?

688 名前:684 [2008/01/18(金) 17:24:42 ]
>>687
あ、すみませんでした、一つ間違いがあることに気がつきました。とはいうものの、
プラスとしてやってみたもののそれでも取ることができませんでした。なんだろう、
映画のフイルムの絵のようなアイコンなのですが・・・。まずは、そのアイコンの
ビューワを探して見てみます、ありがとうございました。


689 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:34:14 ]
アイコンはVisualStudioでDLL読んでみたんだけど、
EEだとリソースは無理か

690 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:43:00 ]
>>686-687
0以上の値は、0からの連番で何個目という指定(シェルのアイコン指定のダイアログの順番)。
負の値は、絶対値がリソースIDを表すという指定。

691 名前:デフォルトの名無しさん [2008/01/18(金) 19:15:16 ]
>>690
あーそうだったのですか、わかりました。それでもう一度やってみます、
どうもありがとうございました!!

692 名前:691 [2008/01/18(金) 21:20:38 ]
>>689-690
アイコンの取得に成功しました、ありがとうございました。助かりました!!


693 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:18:09 ]
int / int で小数点が出てこないのはなんでだぜ?

694 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:19:29 ]
その方が速いから



695 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:10:17 ]
>>693
int/intの結果はintになると規格で決まってるから

696 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:11:29 ]
LOG4NETで設定ファイルを使わずに、ソース上で出力先やAppenderの指定をできる方法ってありますか?
クライアントアプリケーションとして扱う場合に、ユーザに勝手に設定を弄られたくないから
LogManagerでApp.Configの設定を読むような方式にはしたくないのです。
ログ出力クラスを自作したほうが早いですかね?

697 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:49:42 ]
そのまんまコードで初期化すりゃいいんでは?

698 名前:696 mailto:sage [2008/01/20(日) 03:49:16 ]
>697
ログメッセージを出力するためのILogインタフェースを持った
インスタンスを取得するには、LogManagerクラスから取得する
しかないようなんですよね。
LogManagerクラスからはRepositoryやAppenderを取得できても、
設定はできないので、どうしたらいいのか分かりません。

RollingFileAppender appender = new RollingFileAppender();
appender.AppendToFile = true;
appender.File = @"C:\test.log";
appender.Layout = new PatternLayout("%d %5p %c{2} - %m%n");
RootLogger root = new RootLogger(Level.Debug);
root.AddAppender(appender);
root.Log(Level.Debug,"tset", new Exception());

以上のコードでログが出ないか期待しましたがダメでした...

699 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 04:18:03 ]
>698
log4netのソースを直に書き換えて埋め込んじゃえばいいんじゃない?

700 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 08:13:51 ]
>>699 あほですか?

701 名前:デフォルトの名無しさん [2008/01/20(日) 20:53:54 ]
アホちゃいまんねん

702 名前:デフォルトの名無しさん [2008/01/20(日) 20:59:58 ]
パーでんねん

703 名前:698 mailto:sage [2008/01/20(日) 23:56:26 ]
>699
なるべくOSSのモジュールはソース変更したくないんですよ。
ライセンスに従って公開しなきゃいけなくなっちゃうし。
公開するだけならまだ変更部分だけで済みそうですが、
公開するための環境を維持しておかなきゃいけなかったり、面倒です。

704 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:16:31 ]
>703
log4netはアパッチライセンスだから融通が利くよ。



705 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:26:49 ]
ParallelFXのParallel.Forで実行されるスレッド数はいじることができますか?

706 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:21:36 ]
>>705
System.Threading.Tasks.TaskManagerPolicy
のコンストラクタで、minThreads, idealThreads, maxThreads を指定可能。

707 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:49:38 ]
FlowLayoutPanelにコントロールを追加しているのですが、
下記のようなコードだと一瞬ちらつきます。
FlowLayoutPanelにBeginUpdate、EndUpdateのような描画を一時止めるようなメソッドはないでしょうか?

Panel.BeginUpdate;←のようなものありませんか?
Panel.Controls.Clear();←ここでクリアしてる為、一瞬まっさらになり、ちらつく
for (int i = 0; i < max; i++)
{
 Panel.Controls.Add( コントロール );
}
Panel.EndUpdate;←のようなものありませんか?

708 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:28:31 ]
節穴?

SuspendLayout/ResumeLayout

709 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:21:31 ]
PictureBoxの非同期読み込みみたいに、画像の読み込みを途中でキャンセルしたり
読み込み状況をモニターできるようにしたいです。
Image.FromFile等ではそのようなコールバックを指定できないようです。
どうやればいいのでしょうか?

710 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:26:44 ]
ためしもしないで適当に書くと
Image.FromSteamに非同期Streamを渡せばいいんじゃね

711 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:02:26 ]
>>710
Streamを自分で実装してReadの中でゴニョゴニョ、ってことでしょうか。
そういうやり方しかないんかなあ。

712 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 06:00:26 ]
画像のデコード程度、キャンセルしたくなるほどの時間もかからんと思うが

713 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:05:46 ]
Image.FromStreamするとImageが生きてる間はStreamも生きてなきゃダメなのか…
と思ってKB309482見て試してみたけど、アニメーションGIFだとダメだった…

714 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:33:03 ]
DataSetを使ってレコード単位にDBを操作する場合に、
DataSet.DataTable.Rows[i]["カラム名"]
のような記述が必要になりますよね。
(DataGridのDataSourceを使えばそんな意識はしないですが)

この、文字列でカラム名を指定するのがイマイチだと思うのです。
文字列だからインテリセンスも効かないですし、打ち間違えの可能性も。

カラム名を入れたenumを作れば解決できるような気もしますが、
DataSetの中に既に定義があるのですから、それを流用できないでしょうか?

要するに、カラムをカラム名で指定する際に、intと文字列以外の方法が
あるでしょうか?



715 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:12:22 ]
>>714
DataSet継承してカラム名をプロパティにしたクラスを作る。
VisualStudioでテーブルから自動生成すればできるだろ。

716 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 09:26:24 ]
>>713
一旦 MemoryStream に読み込んでそっから Image 作ればいいよ

717 名前:714 mailto:sage [2008/01/31(木) 10:22:15 ]
>>715
どうも有り難うございます。
しばらく考えているんですけれど、どうもイメージが浮かばないです。
DataSetを継承しても、汎用的なものは出来ないように思うのですが。

VSで自動生成と言う意味は、VSのデザイナで自動生成されたDataSetの
ソースを何らかの方法で解析して、カラム名を格納するという意味なのでしょうか‥‥。


718 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:51:08 ]
>>717
厳密に型指定されたDataSetでググる。

DataSetをそのまま使うならカラムやその型の情報はクエリーの応答があるまでわからない。
その場合はカラム名の文字列か序数で指定するしかないな。

719 名前:714 mailto:sage [2008/01/31(木) 18:19:17 ]
>>718
なるほど、DataSetを作る段階で別の種類のDataSetだったのですね。
どうも有り難うございます。調べてみます。

720 名前:デフォルトの名無しさん [2008/01/31(木) 22:15:17 ]

DBと接続して使うんじゃなく、dataset単独で簡易なデータベースとして使うなら、
プロジェクトに新規でxsd(スキーマ)を追加してテーブルやリレーション、キーを定義して、
いっぺんコンパイルすると、ツールボックスにdatasetを継承したdataset1(xsdファイルで定義した
名前による)コンポーネントが現れる。フォームのデザイナでこいつをD&Dしてやると型付けの
あるdatasetとして使えるよ。


721 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 02:47:42 ]
表計算ソフトの=REPT(x;y)を模倣した自作関数をfprintfの第3引数以降に使う場合です。
rept(int x,int y)の記述にはfor,while,do〜whileのどれが適任でしょう?
回数を指定するyは0の場合もあります。


722 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:04:16 ]
それは本当にC#の質問ですか

723 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 09:11:50 ]
ウィンドウを持ったアプリケーションが起動されるのを
監視することはできますか?

724 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:20:47 ]
できます。



725 名前:723 mailto:sage [2008/02/02(土) 13:09:26 ]
>>724
やり方か調べるためのキーワードを教えていただけませんか?

726 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:19:43 ]
findwindow

727 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:26:37 ]
>712
画像のデコードがそこまで重いことはまずないと思うが、
ファイルアクセスが妙に遅延することはあると思うよ。
ノートンとかウイルスバスターがファイルアクセスに
むやみやたらに割り込むから信じられないくらい応答が返ってこないことがあったり。

728 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:51:34 ]
や、それなら普通に事前にMemoryStreamに(非同期で)読んどけば良いじゃん?

729 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:59:01 ]
画像がWeb上とかにあって数KBダウンロード毎に描画するんならキャンセルとかあってもいいかもしれんが、
既にハードディスクあるものを表示するだけで、わざわざキャンセルとか普通やらないな

730 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:08:01 ]
.NETでATLのCComPtrみたいな
タイプライブラリのないInterfaceを扱う仕組みはあるですか?

731 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:26:03 ]
Managed DirectX

732 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 21:38:05 ]
自前でinterface再定義はできる Guid属性とかComImport属性とか使う
IDispatchならType.InvokeMemberでレイトバインディングもできる

733 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:35:42 ]
std::exceptionにUNICODE入れると文字が壊れますか?

734 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:37:43 ]
スレ違い



735 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:08:55 ]
すみません、よろしければ
pc11.2ch.net/test/read.cgi/tech/1200911737/182-183
について教えてください。何卒よろしくお願いします。


736 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:36:45 ]
その質問には答えるなということか。
了解した。

737 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:45:38 ]
IPCをチャンネルに使ったリモーティングを使って、同一PC内でプロセス間通信を
しているのですが、厳密署名したら少し動かなくなりました。

Clinet.exeとServer.exeとRemote.dllの3つのプロジェクトからなるソリューションです。
それぞれのアセンブリに同一のsnkファイルで署名したところ、
Client.exeが、Server.exeからのコールバックのみを受け取れなくなりました。
クライアントからサーバへのメッセージングは今までどおりに出来ています。

こういうモノなのでしょうか?どなたかご存知の方がいらしたら、宜しくお願いします。



738 名前:737 mailto:sage [2008/02/13(水) 13:33:40 ]
IpcChannel channel = new IpcChannel(properties,
 null, new BinaryServerFormatterSinkProvider(properties, null));

クライアントとサービスの両方を、上記の書き方で初期化したら出来ました。

739 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:14:32 ]
SqlTransactionのCommit()のタイムアウト時間を変更したいのですが
どこで設定すればいいのでしょうか?
サーバーの負荷がでかいときにCommitのタイムアウト時間だけ短くてタイムアウトしてしまいます。

740 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:36:26 ]
start tran somewhere here

SqlCommand cmd = new SqlCommand(mySqlCommand, conn);
cmd.CommandTimeout = 0; // NO TIMEOUT
cmd.ExecuteNonQuery();

commit here



741 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:58:26 ]
>740
それで変わるのはExecuteNonQuery()のタイムアウト時間だけで
Commit()のタイムアウト時間は変わらないから困ってるんだよ。

742 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:23:36 ]
なるほど。
しかし、"BEGIN TRANSACTION"と"COMMIT"をExecuteNonQueryで実行したら?


743 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 22:05:21 ]
>742
確かにSqlTransactionのCommitもExecuteNonQueryでCOMMIT叩いてるだけにしか見えないのでそれでもいいかなとか思ってました…。
やってみたらそれで問題なく動いてしまったし。
SqlTransactionの存在意義がなくなってしまうけど仕方がないか。

744 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:18:25 ]
マクロメディアFlashの
タイムラインみたいなウィンドウ作りたいけど

やっぱり自作しなきゃだめかな
なんか楽そうな方法ありませんか?



745 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:20:43 ]
最近どっかで見たな

746 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 13:04:29 ]
NiVEとか?

747 名前:747 mailto:sage [2008/02/29(金) 01:44:05 ]
axWindowsMediaPlayerを使ってオーディオファイルを再生しています。
ListBoxにプレイリストの内容を表示しようと

this.listBox1.SuspendLayout();
for(int i = 0; i < wmp.currentPlaylist.count; i++) {
this.listBox1.Items.Add(wmp.currentPlaylist.get_Item(i));
}

として、ListBoxにプレイリストの内容を表示しました。
更に再生中のMediaを選択状態にしたく、続けて

for(int i = 0; i < this.listBox1.Items.Count; i++) {
if(this.listBox1.Items[i].Equals(wmp.Ctlcontrols.currentItem)) {
this.listBox1.SelectedIndex = i;
}
}
this.listBox1.ResumeLayout();

としました。しかし、再生中のMediaが選択されません。
インターフェース同士の比較が上手くいかないからなのかなと思っています。
上手くいく方法がありましたら教えて下さい。もう3時間位悩んでいます。
よろしくお願いします。

748 名前:747 [2008/02/29(金) 04:47:58 ]
age忘れてました。まだ悩んでます。助けて下さい。orz

749 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 16:00:56 ]
そもそも、PlayList[]の型とcurrentItemの型が違う。

750 名前:747 [2008/02/29(金) 16:37:55 ]
wmp.currentPlaylist.get_Item(i)

wmp.Ctlcontrols.currentItem
もWMPLib.IWMPMediaかと思ったのですが、違うのでしょうか?
for(int i = 0; i < this.listBox1.Items.Count; i++) {
if(((WMPLib.IWMPMedia)(this.listBox1.Items[i])).Equals(wmp.Ctlcontrols.currentItem)) {
this.listBox1.SelectedIndex = i;
}
}
this.listBox1.ResumeLayout();
とキャストしても比較出来てないみたいだし、どうしましょ…orz

751 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:39:35 ]
そもそもオブジェクトを比較してどうすんだ
メディアプレイヤーいぢったことないけども、普通に考えて実体はCOMの先だろう
何らかのインスタンスを識別するIDとかがあるだろうからそれで比較汁

752 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:49:27 ]
>>751
何らかのインスタンスを識別するID
o...rz

753 名前:747 [2008/02/29(金) 22:35:46 ]
解決しますた。
get_isIdenticalの戻り値と引数を見て、
もしかして…と思って試したら当たりですた。
this.listBox1.SuspendLayout();
for(int i = 0; i < wmp.currentPlaylist.count; i++) {
WMPLib.IWMPMedia media = wmp.currentPlaylist.get_Item(i);
int j = this.listBox1.Items.Add(media);
if(wmp.Ctlcontrols.currentItem.get_isIdentical(media)) {
this.listBox1.SelectedIndex = j;
}
}
this.listBox1.ResumeLayout();

754 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 19:03:45 ]
listViewに大量のデータを設定していると
スクロールした時とか、再描画がとてつもなく重いんです。

プロパティとかで回避方法ってありますか?

また、セル表示で別のコントロールでお勧めのやつってありますか?





755 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 19:22:28 ]
VirtualMode やや面倒だけどな
DataGridView

756 名前:756 mailto:sage [2008/03/06(木) 18:09:14 ]
相談があります。
forums.fanatic.net.nz/index.php?showtopic=11226&st=0&p=81800&
のCのコードを参考にしてC#で同じ事をしようとコードを書きました。

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace msnTest {
public partial class Form1 :Form {

private const int WM_COPYDATA = 0x004A;

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, ref COPYDATASTRUCT lParam);

[StructLayout(LayoutKind.Sequential)]
private struct COPYDATASTRUCT {
public IntPtr dwData;
public int cbData;
public IntPtr lpData;
}

}

続く






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

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

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