2015-12-15 2 views
-1

Первое пространство имен проекта: пространство имен EDSDKLib, а затем класс: класс SDKHandler общественности: IDisposableКак передать переменные между двумя проектами в одном и том же решении с различным пространством имен?

Внутри этого класса я есть метод:

public void DownloadImage(IntPtr ObjectPointer, string directory) 
     { 
      EDSDK.EdsDirectoryItemInfo dirInfo; 
      IntPtr streamRef; 
      //get information about the image 
      Error = EDSDK.EdsGetDirectoryItemInfo(ObjectPointer, out dirInfo); 
      string CurrentPhoto = Path.Combine(directory, dirInfo.szFileName); 
      //create a filestream for the image 
      Error = EDSDK.EdsCreateFileStream(CurrentPhoto, 
      EDSDK.EdsFileCreateDisposition.CreateAlways, EDSDK.EdsAccess.ReadWrite, out streamRef); 
      uint blockSize = 1024 * 1024; 
      uint remainingBytes = dirInfo.Size; 
      //download the image data in blocks 
      do 
      { 
       if (remainingBytes < blockSize) { blockSize = (uint)(remainingBytes/512) * 512; } 
       remainingBytes -= blockSize; 
       Error = EDSDK.EdsDownload(ObjectPointer, blockSize, streamRef); 
      } while (remainingBytes > 512); 
      //download the last bit of the image 
      Error = EDSDK.EdsDownload(ObjectPointer, remainingBytes, streamRef); 
      //tell the camera that the download is done 
      Error = EDSDK.EdsDownloadComplete(ObjectPointer); 
      //release image and stream 
      Error = EDSDK.EdsRelease(ObjectPointer); 
      Error = EDSDK.EdsRelease(streamRef); 
     } 

После того как изображение загружается в I жестком диске хотите использовать переменную bool, еще не уверенную, где в методе DownloadImage после строк EdsRelease. Например, переменная bool, которая будет называться Saved, и в конце, чтобы установить ее в true: Saved = true;

Тогда у меня есть другой проект. Это пространство имен проектов: WinFormsUI И основная форма: public partial class MainForm: Form

В этой форме я хочу проверить переменную Saved bool из другого проекта. Например, чтобы запустить таймер с интервалом в секунду и проверять каждую секунду, если переменная Сохранена, она истинна.

Как только это правда, таймер сделает что-то и снова установите переменную Saved на false и снова запустите таймер.

Вот как это должно выглядеть в MainForm я думаю:

private void timer1_Tick(object sender, EventArgs e) 
     { 
      if (Saved == true) 
      { 
       timer1.Stop(); 
       // Do something 
       Saved = false; 
       timer1.Start(); 
      } 
     } 

Проблема в том, как я прохожу и использовать переменную сохраненному между проектами. Итак, я могу проверить, правда ли это в MainForm, и когда я вернул его в false в MainForm, он вступит в силу и в EDSDKLib, чтобы он не оставался верным.

+1

Каковы два типа проектов? Если одна из них является библиотекой классов, тогда ее можно указать в проекте WinForms. Если они оба исполняемые файлы, вам нужно использовать какой-то механизм IPC (Inter-Process Communication). – PoweredByOrange

+0

Проект EDSDKLib - это библиотека классов, а вторая - winforms. –

ответ

1

В SDKHandler необходимо добавить статическое общедоступное имущество с именем Saved типа bool. В форме WinForms вам необходимо проверить на SDKHandler.Saved = true и установить SDKHandler.Saved = false после обработки в обработчике событий Tick.

Смежные вопросы