C#

C#でスレッドをAbort()はあかん

C#

スレッドの強制終了は、危険です。 予期しない状態で終了することにより、データ破壊等の障害が発生する可能性があります。 ネタ元 https://ja.stackoverflow.com/questions/5743/%E3%83%9E%E3%83%AB%E3%83%81%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%81%A7…

C#のロックの処理速度比較

C#

Interlocked > lock > SemaphoreSlim > Semaphore の順に早いようです。ちなみに lock ステートメントのなかでロックされるのは、lock に指定したオブジェクトのみ なので注意。ネタ元 http://qiita.com/tadokoro/items/28b3623a5ec58517d431 http://d.haten…

Visual C# を使用してスレッドを作成する方法

C#

using System.Threading; ... private void ThreadTask() { ...処理 } ... // タスク起動 Thread trd = new Thread(new ThreadStart(this.ThreadTask)); trd.IsBackground = true; trd.Start(); ネタ元 https://support.microsoft.com/ja-jp/help/815804/how…

coincheckのAPIをC#から実行サンプル

C#

たすかるー サイト https://kokenji.net/coincheck-api/

C#の排他 lockとMutex

C#

Mutex アンマネージドコード (Win32ラッパー) である。 マルチスレッドだけでなく、マルチプロセスでも排他出来る C#(.Net Framework)以外の言語でも考え方を流用出来る。 lock マネージドコードである。 マルチプロセスの排他は出来ない。 C#(.Net Framwork…

C#でReDim

C#

Array.Resize 使う //要素数5の配列 int[] intArray = { 0, 1, 2, 3, 4 }; //要素数を10に増やす Array.Resize(ref intArray, 10);ネタ元 http://dobon.net/vb/dotnet/vb2cs/redimpreserve.html

C#でmemset

C#

Array.Clear使う // StaticのArrayクラスを使います。 using System; // num1配列に適当な初期値を入れる。 int[] num1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // num1配列をゼロクリアする。 Array.Clear( num1, 0, 9 ); // 配列名 インデックス 個数 ネタ元 ht…

C#でREST通信時、BODYにデータを入れる方法

C#

GetRequestStream()を使う HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create("http:\\domain.com\page.asp"); ASCIIEncoding encoding=new ASCIIEncoding(); string stringData = ""; //place body here byte[] data = encoding.GetBytes(strin…

文字列をBase64でエンコード/デコードする

C#

こんなクラスを用意して public class MyBase64str { private Encoding enc; public MyBase64str(string encStr) { enc = Encoding.GetEncoding(encStr); } public string Encode(string str) { return Convert.ToBase64String(enc.GetBytes(str)); } public…

C#で一番簡単にRESTでデータ取得する方法

C#

リクエストURLがこんなんで http://example.com/app/search?type=json&q=JSONで結果が返ってくるとします。 System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)WebRequest.Create("http://example.com/app/search?type=json&q="); req.Headers.Ad…

C#で数値の桁数を求める方法

C#

色んなパターンがあるが、最速はテーブルを使った方法、最も遅いのは文字列化。 こちらはテーブル使った方法 using System; class Sample { static readonly int[] digits = {0, 9, 99, 999, 9999, 99999, 999999, /*9999999, 99999999, ... */}; static voi…

VB.NETとC#でデバッグビルド時のみ通るコードを書く

VB.NET #If DEBUG Then Console.WriteLine("デバッグバージョンです。") #End IfC# #if DEBUG Console.WriteLine("デバッグバージョンです。"); #endifネタ元 http://dobon.net/vb/dotnet/programing/define.html

C#でメモリマップドファイル

C#

string文字列を扱う場合usingを使うと最後にDisposeしてくれる。 初期化 mmf = System.IO.MemoryMappedFiles.MemoryMappedFile.CreateNew("abc", 1024);書き込み using (var stream = mmf.CreateViewStream()) using (System.IO.StreamWriter sw = new Syste…

ファイル追記

C#

System.IO.StreamWriter writer = null; // Shift-JISのテキストファイルを作成します。 // 第2パラメータは既存ファイルが存在する場合の振る舞いを示します。 // false:上書き、true:追記 writer = new System.IO.StreamWriter( @"c:\hello.txt", true,…

文字列からDateTime型に変換

C#

DateTime datetime_parse = DateTime.Parse("2015/4/5 22:42"); ネタ元 http://pk-brothers.com/1688/

C#でperlのtime関数と同じ1970/1/1からの秒数を取得

C#

DateTime dt_start = new DateTime(1970, 1, 1, 0, 0, 0); DateTime dt_now = DateTime.Now; long perl_time = (long)(dt_now - dt_start).TotalSeconds;

.NETライブラリ CsvHelper

C#

NuGetパッケージマネージャーからインストールできるCSVアクセス用ライブラリ。手作りするよりいいかと思って利用してみたけど、なんやと手間取った・・・。 マニュアル(英語) http://joshclose.github.io/CsvHelper/#getting-started とりあえずサンプル読…

.NETでメール受信ライブラリ「OpenPop.NET」

C#

VisualStudioのツール>NuGetパッケージマネージャからインストールできるサンプルやドキュメントは http://hpop.sourceforge.net/ へ。 ただメール受信して本文表示サンプル using OpenPop.Pop3; ...{ Pop3Client client = new Pop3Client(); client.Connect…

.NETでJSONを扱える超軽量ライブラリ「DynamicJson」

C#

NuGetでインストールできるよネタ元 http://yuuxxxx.hatenablog.com/entry/2014/01/13/231500

C#でWebSocktを使う

C#

もともとHTML5の規格の一部だったのが独立したものらしい。 標準のライブラリはないので、なにか別なとこから持ってこないといけない。NuGetを使って「WebSocket4Net」というのを使ってみた。いい感じ ネタ元 http://kimux.lolipop.jp/?cat=3 そもそもWebSoc…

C#でstrtokの代わりはSplit

C#

String Key = "12@34@56@78"; //戻り値には、空の文字列を含む配列要素が格納されます。 String[] split = info.Key.Split(new string[] { "@" }, StringSplitOptions.None); MsgBox(split[0]); // "12" MsgBox(split[1]); // "34" MsgBox(split[2]); // "56…

正規表現である文字で挟まれた、部分文字列を取得する方法

using System.Text.RegularExpressions; してRegexを使う using System; using System.Net; using System.Text.RegularExpressions; class RegexMatch { static void Main() { string anchor = "<a href=\"(?<url>.*?)\".*?>(?<text>.*?)</a>"; // @ITのトップページを取得 WebClient w…

C++から.NET(C#)のDLLに文字列を含む構造体を渡して書き込んでもらう方法

[.net][CPP][C#]C++側 typedef struct _StrData{ INT32 num0; INT32 num1; INT32 num2; INT32 num3; INT32 num3; char moji0[5]; // 4文字 char moji1[2]; // 1文字 StrData(){ num0 = num1 = num2 = num3 = num4 = 0; memset(moji0,0,5); memset(moji1,0,2)…

マネージドDLLの作成と呼び出す手順

■呼び出すDll(クラスライブラリ) ファイル名 ClassLibrary1.dllVB.netで作成した場合------------------------------- 新しいプロジェクトにてクラス ライブラリ を選択 プロジェクト名 ClassLibrary1 Public Class Class1 Dim i As Int32 Public Sub setI…

構造体を明示的に定義する

C#

[C#][StructLayout(LayoutKind.Explicit)]で 全てのメンバ変数に対して明示的に位置を指定となる。 [StructLayout(LayoutKind.Explicit)] unsafe struct ImageData { [FieldOffset(0)] public int Width; [FieldOffset(4)] public int Height; [FieldOffset…

C#で作成したDLLをExcelVBAで利用するにはregsvr32じゃなくてRegAsm.exeを使う

.NET で作成した COM 対応コンポーネントのレジストリ登録には regasm.exe を利用する。 regasm.exe /codebase XXX.DLL regasm.exeにはパスが通ってないので、 C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exeとかで。ちなみにcodebaseというのは…

MessageBox.Show()を使うには参照設定でSystem.Windows.Formsを追加してからusing

C#

[C#] using System.Windows.Forms;っていれてもエラーになるときは参照設定不足。 ソリューションエクスプローラにある「参照設定」を右クリックして「参照の追加」を選択し、「参照の追加」ウインドウを表示 「.NET」タブのコンポーネント名「System.Window…

C#のプロジェクトのプラットフォームを変更したいのにAny CPU以外指定できなかったら構成マネージャで新規追加する

C#

[C#]x64とかx86とかネタ元 http://msdn.microsoft.com/ja-jp/library/ms185328(v=vs.90).aspx

C#で作ったDLLのAPIにC++から構造体のポインタを渡して、結果を書き込んでもらう

[CPP][C#]これで正解なのかわからないが、とりあえずできたのでメモ。C#の方はunsafeを有効にしておく。 C#側 [DllImport("kernel32.dll")] static extern unsafe void CopyMemory(void* dst, void* src, int size); // 受け渡し用構造体(32bit前提) [Struct…

不要なusing宣言を整理

C#

[C#]VisualStudioのメニューから[編集]->[IntelliSense]->[usingの整理]->[未使用のusingの削除・整理]ネタ元 http://d.hatena.ne.jp/jonki/20120527/1338094280