第一个项目命名空间是:命名空间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中生效,所以它也不会保持原样。
答案 0 :(得分:1)
在SDKHandler
中,您需要添加名为Saved
的{{1}}类型的静态公共属性。在WinForms表单中,您需要检查bool
并在SDKHandler.Saved = true
事件处理程序中处理后设置SDKHandler.Saved = false
。