CSVファイルを読み込む

今会社でちょっとした開発をしているだが、PHPで処理するのか、C#のようなアプリで処理するのかを悩んだ結果、C#でアプリを開発することした。

それは、「CSVファイルをMovable Typeのインポート用ファイルに変換する」というもの。

ということで、まずはC#でCSVファイルを読み込むにはどうしたらいいかということを調べた。

以下のような感じ。

“CSVファイルを読み込む” の続きを読む

子フォームから親フォームの関数を呼び出す方法

アプリケーションを作っていると、フォームをいくつか作らなくてはならなくなりますが、親のフォームがあって、そのフォームの関数を子のフォームから呼び出す必要が出てきます。

そんな時には、以下の方法でできるそうです。

仮定

Form1が親フォーム、Form2が子フォーム

親フォームに関数を定義する

まずは親フォームに呼び出したい関数を定義します。

public void hoge()
{

}

“子フォームから親フォームの関数を呼び出す方法” の続きを読む

時間がかかる処理にはDoEvents

大量のファイルコピーを事項するときに、「応答なし」がでてしまい、どうしたものかと悩んでいたら、以下のようなことで解決ができた。

forループやforeachなどの中に以下の一文を入れるといいらしい。

Application.DoEvents();

確かにこれで「応答なし」という状況はなくなった。。。ほっ(^^;)

PictureBoxに画像を表示するときはFileStreamを使うべし

いや~、はまったはまった。。。。

前回、スレットセーフなログの出力というのを書きましたが、ぶち当たっていた壁というのはここではなかった・・・・・

というのも、画像を保存して、それをPictureBoxに表示していたのだが、そのPictureBoxに表示するときに以下のようにすると画像ファイルをロックしてしまい、別なプロセスからアクセスしようとしても例外が発生してしまうようだ。

//using System.Drawing;
this.PictureBox1.Image = Image.FromFile(filepath);

“PictureBoxに画像を表示するときはFileStreamを使うべし” の続きを読む

スレッドセーフな?ログファイルの書き出し

C#を始めたばかりで、なかなか一つの案件もまともに作れない状況ですが・・・

ちょっといろいろ調べて、マルチスレッドでログファイルを書き込む場合、以下のようにしたら、とりあえずエラーが出なくなったので、簡単にまとめておきます。

private void logging(String logstr)
{
	DateTime dt = DateTime.Now;
	String logfile = LogPath + dt.ToString("yyyyMMdd") + ".log";

	FileStream fs = new FileStream(logfile, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
	StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding(932));
	TextWriter tw = TextWriter.Synchronized(sw);
	tw.WriteLine(DateTime.Now.ToString() + " " + logstr);
	tw.Flush();
	fs.Close();
}

肝心なのは、FileStreamでファイルオープンの属性を付けなきゃいけないことだった。
“スレッドセーフな?ログファイルの書き出し” の続きを読む