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

时间:2015-12-15 00:09:20

标签: c# .net winforms

第一个项目命名空间是:命名空间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中的位置。 例如,一个名为Saved的bool变量,最后将其设置为true:Saved = true;

然后我有另一个项目。 这个项目命名空间是:WinFormsUI和主要形式:公共部分类MainForm:Form

在这种形式中,我想检查其他项目中的Saved bool变量。 例如,以一秒为间隔运行一个计时器,如果变量Saved it为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中是真的,当我在MainForm中将它设置为false时,它也将在EDSDKLib中生效,所以它也不会保持原样。

1 个答案:

答案 0 :(得分:1)

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