CSharp のバックアップ(No.10) - PukiWiki

FrontPage

概念
[edit]

CSharp概念?

可重新分发的框架?

このページのトップへ

Tips
[edit]

タイトル閲覧
文字列とバイナリデータCSharp0001?
半透明の画像を表示する方法CSharp0002?
MessageBoxをオーナーウィンドウの中央に配置する方法CSharp0003?
C# 插件构架实战CSharp0004?
ロック・デッドロックの説明CSharp0005?
このページのトップへ

未整理Tips
[edit]

このページのトップへ

アプリケーション構成ファイル(App.config)、Web構成ファイル(Web.config)にカスタム構成セクションを追加する
[edit]

 ポイントはConfigurationSection、ConfigurationElement、ConfigurationElementCollectionを継承したクラスでカスタム構成セクションを読み込む下地を作ります。あとはConfigurationManagerを使って呼び出すだけです。
http://blogs.wankuma.com/tatsumihr/articles/79793.aspx
参考:
MSDN:方法 : ConfigurationSection を使用してカスタム構成セクションを作成する
http://msdn2.microsoft.com/ja-jp/library/2tw134k3(vs.80).aspx

このページのトップへ

現在のアプリのパスを取得
[edit]

string path = System.Windows.Forms.Application.StartupPath;
MessageBox.Show(path);
このページのトップへ

メソッド名と取得する
[edit]

StackTrace st = new StackTrace(true);
foreach (StackFrame f in st.GetFrames())
{
      System.Windows.Forms.MessageBox.Show(f.GetFileColumnNumber() + "-" + f.GetMethod());
}
このページのトップへ

トレースソースの作成
[edit]

http://msdn.microsoft.com/ja-jp/library/ms228984.aspx app.config によって、作成することが可能です。

このページのトップへ

ローカルのTempパスを取得
[edit]

//ユーザーのローカルApplication Dataフォルダのパスを取得
//Path.Combineメソッドを利用して、パスの結合することができる
string path = Path.GetFullPath(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "..\\Temp"));

結果:


string path2 = Path.GetFullPath(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));

結果:

このページのトップへ

閏年の判断
[edit]

DateTime.IsLeapYear()メソッドで判断できる
このページのトップへ

レジストリへのアクセス
[edit]

HKEY_CURRENT_USER へのアクセスは管理者権限が要りません。
HKEY_LOCAL_MACHINE へのアクセスは管理者権限が要ます。

このページのトップへ

Windows 7 VHD 利用するラップクラス
[edit]

http://files.codes-sources.com/fichier.aspx?id=50320&f=Win7_VirtualDiskWrapper%2fVirtualDiskWrapper%2fVHD.cs

このページのトップへ

別のスレッドからコントロールを操作
[edit]

this.Invoke((MethodInvoker)delegate() 
   { 
       progressBar1.Maximum = 100; 
   } 
);
このページのトップへ

System.Runtime.Serialization.Jsonの参照
[edit]

名前は、System.Runtime.Serialization.JSON.DataContractJsonSerializerなのに、System.Runtime.Serialization.JSONパッケージに入っていない。

DataContractJsonSerializer クラス
名前空間 : System.Runtime.Serialization.Json
アセンブリ : System.ServiceModel.Web (System.ServiceModel.Web.dll 内)

このページのトップへ

数値を3桁カンマ区切りにフォーマットする
[edit]

 stringクラスのformatメソッドを利用

int val = 10000;
Console.WriteLine(string.Format("{0:N0}", val));//第二引数は string 型に宣言すると、変換できません。
このページのトップへ

特定の外部アセンブリにのみ internalスコープのクラスやメソッドを公開する
[edit]

(抜粋)
[assembly: InternalsVisibleTo("TestClassLibrary1")]

(参考URL)
http://www.atmarkit.co.jp/fdotnet/csharp20/csharp20_07/csharp20_07_03.html

このページのトップへ

排他制御とデッドロック
[edit]

 排他制御とは、一度に1つのスレッドしかアクセスできない制限をかけることを指します。排他制御を行わないと、マルチスレッドなプログラムでは、データの不整合を引き起こす場合があります。
 デッドロックとは複数のスレッドが、リソースをロックしあい、結果としてプログラムが停止してしまうことです。以下のプログラムはかなり高い確率でデッドロックを発生します。
 複数のリソースをロックしなくてはならないようであれば、ロック取得の順番は常に一定にしておくことが効果的です。

C# の lock ステートメントはクリティカルセクションです。

class Clazz{
	private static object syncobj = new object();

	public void Func1(){
		lock(syncobj){
			// コード1
		}
	}

	public void Func2(){
		lock(syncobj){
			// コード2
		}
	}
}

lock は上記のようにやれば、「コード1」を実行中に「コード2」が実行される事はありません、という使い方です。当然ですけど、まったく同じオブジェクトをロックしなければなりません。

#ちなみにこの方法は結構重いので、使いどころはよく考慮する。

このページのトップへ

GUID形式の文字列にマッチする.Net正規表現
[edit]

(?i:{?(?<guid>([0-9A-Z]{8}(-?)[0-9A-Z]{4}\2[0-9A-Z]{4}\2[0-9A-Z]{4}\2[0-9A-Z]{12}))}?)

下記のような形式のGUIDをマッチできます。

{020cac21-6dcb-4d0e-ae79-86982cf3ad90}
{020cac216dcb4d0eae7986982cf3ad90}
020cac21-6dcb-4d0e-ae79-86982cf3ad90
020cac216dcb4d0eae7986982cf3ad90

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

PCpዾyǗlgĂ܂}WŔ܂z 萔O~ył񂫁z Yahoo yV NTT-X Store

z[y[W ̃NWbgJ[h COiq ӂ邳Ɣ[ COsیI COze