PDA

View Full Version : CreateMutexA



amir_civil
شنبه 17 تیر 1385, 19:14 عصر
سلام دوستان
منچهجوری میتونم از این ای پی ای استفاده کنم

CreateMutexA
تو ایمپورت کردنش مشکل دارم

M.GhanaatPisheh
شنبه 17 تیر 1385, 22:16 عصر
دوست عزیز
چرا از کلاس Mutex موجود در خود NET Framework. استفاده نمی کنید؟
به راحتی و بدون دردسر می تونید Mutex خودتون رو بسازید و استفاده بهینه ازش بکنید.
برای استفاده از کلاس Mutex فضای نام System.Threading به پروژتون اضاف کنید.
این کلاس در حقیقت یک Wrapper برای َAPI های win32 هست که شما از یکی این functionها قصد دارید استفاده کنید.

amir_civil
شنبه 17 تیر 1385, 22:53 عصر
سلام
ممنون میشه یه مثال بزنید
من نتونستم

M.GhanaatPisheh
شنبه 17 تیر 1385, 23:37 عصر
// This example shows how a Mutex is used to synchronize access
// to a protected resource. Unlike Monitor, Mutex can be used with
// WaitHandle.WaitAll and WaitAny, and can be passed across
// AppDomain boundaries.

using System;
using System.Threading;

class Test
{
// Create a new Mutex. The creating thread does not own the
// Mutex.
private static Mutex mut = new Mutex();
private const int numIterations = 1;
private const int numThreads = 3;

static void Main()
{
// Create the threads that will use the protected resource.
for(int i = 0; i < numThreads; i++)
{
Thread myThread = new Thread(new ThreadStart(MyThreadProc));
myThread.Name = String.Format("Thread{0}", i + 1);
myThread.Start();
}

// The main thread exits, but the application continues to
// run until all foreground threads have exited.
}

private static void MyThreadProc()
{
for(int i = 0; i < numIterations; i++)
{
UseResource();
}
}

// This method represents a resource that must be synchronized
// so that only one thread at a time can enter.
private static void UseResource()
{
// Wait until it is safe to enter.
mut.WaitOne();

Console.WriteLine("{0} has entered the protected area",
Thread.CurrentThread.Name);

// Place code to access non-reentrant resources here.

// Simulate some work.
Thread.Sleep(500);

Console.WriteLine("{0} is leaving the protected area\r\n",
Thread.CurrentThread.Name);

// Release the Mutex.
mut.ReleaseMutex();
}
}


و یا
http://www.codeproject.com/csharp/singleinstanceapplication.asp