Первое пространство имен проекта: пространство имен 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, чтобы он не оставался верным.
Каковы два типа проектов? Если одна из них является библиотекой классов, тогда ее можно указать в проекте WinForms. Если они оба исполняемые файлы, вам нужно использовать какой-то механизм IPC (Inter-Process Communication). – PoweredByOrange
Проект EDSDKLib - это библиотека классов, а вторая - winforms. –