private string FindFile(FindFileDelegate finder) { Option oldOptions = this.Options; IntPtr nativePathBuffer = IntPtr.Zero; try { nativePathBuffer = Marshal.AllocCoTaskMem( sizeof(char) * (Constants.MaxPath + 1)); this.Options = oldOptions | Option.Debug; if (!finder(nativePathBuffer)) { int lastError = Marshal.GetLastWin32Error(); throw new SymbolHandlingException(string.Format("Error : 0x{0:X8}", lastError)); } return(Marshal.PtrToStringUni(nativePathBuffer)); } finally { this.Options = oldOptions; if (IntPtr.Zero != nativePathBuffer) { Marshal.FreeCoTaskMem(nativePathBuffer); } } }
/// <summary> /// НАчать добавление новых сигнатур /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void button_begin_scan_add_sign_Click(object sender, EventArgs e) { calcPi = new FindFileDelegate(ScanStart); calcPi.BeginInvoke(ScanningType.AddNewSigns, null, null); }
/// <summary> /// Начтать поиск /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolStripButtonStart_Click(object sender, EventArgs e) { calcPi = new FindFileDelegate(ScanStart); calcPi.BeginInvoke(ScanningType.CheckSigns, null, null); }