CSharp概念?
可重新分发的框架?
タイトル | 閲覧 |
文字列とバイナリデータ | CSharp0001? |
半透明の画像を表示する方法 | CSharp0002? |
MessageBoxをオーナーウィンドウの中央に配置する方法 | CSharp0003? |
C# 插件构架实战 | CSharp0004? |
ロック・デッドロックの説明 | CSharp0005? |
ポイントは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
string path = System.Windows.Forms.Application.StartupPath; MessageBox.Show(path);
StackTrace st = new StackTrace(true); foreach (StackFrame f in st.GetFrames()) { System.Windows.Forms.MessageBox.Show(f.GetFileColumnNumber() + "-" + f.GetMethod()); }
http://msdn.microsoft.com/ja-jp/library/ms228984.aspx app.config によって、作成することが可能です。
//ユーザーのローカル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));
結果:
DateTime.IsLeapYear()メソッドで判断できる
HKEY_CURRENT_USER へのアクセスは管理者権限が要りません。
HKEY_LOCAL_MACHINE へのアクセスは管理者権限が要ます。
this.Invoke((MethodInvoker)delegate() { progressBar1.Maximum = 100; } );
名前は、System.Runtime.Serialization.JSON.DataContractJsonSerializerなのに、System.Runtime.Serialization.JSONパッケージに入っていない。
DataContractJsonSerializer クラス
名前空間 : System.Runtime.Serialization.Json
アセンブリ : System.ServiceModel.Web (System.ServiceModel.Web.dll 内)
stringクラスのformatメソッドを利用
int val = 10000; Console.WriteLine(string.Format("{0:N0}", val));//第二引数は string 型に宣言すると、変換できません。
(抜粋)
[assembly: InternalsVisibleTo("TestClassLibrary1")]
(参考URL)
http://www.atmarkit.co.jp/fdotnet/csharp20/csharp20_07/csharp20_07_03.html
排他制御とは、一度に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」が実行される事はありません、という使い方です。当然ですけど、まったく同じオブジェクトをロックしなければなりません。
#ちなみにこの方法は結構重いので、使いどころはよく考慮する。
(?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
e[NȂECir Yahoo yV LINEf[^[Ōz500~`I
z[y[W ̃NWbgJ[h COiq@COsیI COze