如何在具有不同命名空间的同一解决方案中的两个项目之间传递变量

本文关键字:两个 项目 变量 之间 解决方案 命名空间 | 更新日期: 2023-09-27 18:26:44

第一个项目命名空间是:namespace EDSDKLib,然后类是:public class 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);
        }

一旦图像被下载到硬盘,我想使用一个bool变量,还不确定在EdsRelease行之后的方法DownloadImage中的位置。例如,一个bool变量将被调用Saved,并最终将其设置为true:Saved=true;

然后我有另一个项目。这个项目名称空间是:WinFormsUI和主窗体:公共分部类MainForm:form

在这个表单中,我想检查另一个项目中的Saved bool变量。例如,以秒为间隔运行计时器,并每隔一秒检查变量Saved it是否为true。

一旦为true,停止计时器执行某些操作,并再次将变量Saved设置为false,然后再次启动计时器。

这就是它在MainForm中的样子,我认为:

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

问题是如何在项目之间传递和使用Saved变量。因此,我可以在MainForm中检查它是否为true,当我在MainForm中将其设置回false时,它也将在EDSDKLib中生效,因此它也不会保持为true。

如何在具有不同命名空间的同一解决方案中的两个项目之间传递变量

SDKHandler中,您需要添加一个类型为bool的名为Saved的静态公共属性。在WinForms表单中,您需要检查SDKHandler.Saved = true,并在Tick事件处理程序中处理后设置SDKHandler.Saved = false