C# セマフォについて
C#にて、セマフォのやり方についての質問です。
プロセスCにWndProcのプロシージャを起動させておきます。
プロセスA,BはプロセスCにプロセス間通信にてwinメッセージを送ります。
プロセスCは受け取ったWinメッセージによって、データベースへアクセスし処理を行います。
プロセスA →
プロセスC
プロセスB →
(A,B,Cは別々のアプリです)
以前、プロセスAとプロセスBで2つ同時にWinメッセージが来た際に、処理としては1つの
Winメッセージの処理を終了してから、もう1つのWinメッセージの処理を行うという回答を
頂きました。
(今回はプロセスCにデータベースへアクセスし処理をするという動作が新たに加わっています。)
質問は、シングルスレッド時のセマフォの取得の仕方をご教授願いたいと思っております。
上記の以前の質問の回答からプロセスCはシングルスレッドであるため、セマフォを取得する必要はないと思うのですが、
一応念のため、セマフォを取得し同時データベースへアクセスし処理を行わないようにしたいと思っています。
(同時に処理を行うということはないと思うのですが・・・)
やり方をご教授いただければ幸いです。よろしくお願いいたします。
雑なコードで申し訳ございません。
プロセスCのWndProc↓↓↓
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void WndProc(ref Message m)
{
const int WM_M = ****;//プロセスA,BからWinメッセージ
base.WndProc(ref m);
if (m.Msg == WM_CHAR)
{
datbase db = new datbase;
db.aaaa(ref m);/* データベースアクセスメソッド */
}
else
{
base.WndProc(ref m);
}
}
}
datbaseクラス↓↓↓
public class datbase
{
public void aaaa()
{
if (プロセスA)
{
セマフォ取得;
データベースアクセスして処理;
セマフォ解放;
}
else if (プロセスB)
{
セマフォ取得;
データベースアクセスして処理;
セマフォ解放;
}
}
}