int tick1 = Environment.TickCount;
..............
//루틴
..............
int tick2 = Environment.TickCount;
double elaspsed1 = (tick2 - tick1) / 1000.0;
MessageBox.Show(elaspsed1.ToString() + " Sec");
Tag : C#, environment, TickCount
using System.Management;.net 2.0 이상에서 사용 가능합니다.
ManagementEventWatcher w = null;
private void StartCdromCheck()
{
WqlEventQuery q;
ManagementOperationObserver observer =
new ManagementOperationObserver();// Bind to local machine
ConnectionOptions opt = new ConnectionOptions();
opt.EnablePrivileges = true; //sets required privilege
ManagementScope scope =
new ManagementScope("root\\CIMV2", opt);try
{
q = new WqlEventQuery();
q.EventClassName = "__InstanceModificationEvent";
q.WithinInterval = new TimeSpan(0, 0, 1);// DriveType - 5: CDROM
q.Condition = @"TargetInstance ISA 'Win32_LogicalDisk'
and TargetInstance.DriveType = 5";
w = new ManagementEventWatcher(scope, q);// register async. event handler
w.EventArrived +=
new EventArrivedEventHandler(CDREventArrived);
w.Start();
}
catch
{
}
}
public void CDREventArrived(object sender,
EventArrivedEventArgs e)
{
// Get the Event object and display it
PropertyData pd = e.NewEvent.Properties["TargetInstance"];if (pd != null)
{
ManagementBaseObject mbo =
pd.Value as ManagementBaseObject;// if CD removed VolumeName == null
private void EndCheckDrive()
if (mbo.Properties["VolumeName"].Value != null)
{
// Insert 루틴
}
else
{
// Eject 루틴
}
}
}
{
w.stop();
w.Dispose();
}