async void OnFrameAvailable(object sender, FrameReadyEventArgs e)
        {
            lastFrameTime = Environment.TickCount;

            var img = e.BitmapSource;

            CameraImage.Source = e.BitmapSource;

            if (img != null)
            {
                device.CameraInfo.LastFrame = img;
            }

            if (lastCheckTime + 1000 < lastFrameTime)
            {
                lastCheckTime = Environment.TickCount;
                var properties = await device.GetStatus();

                if (properties.ContainsKey("alarm_status"))
                {
                    // device current alarm status,0=no alarm;1=motion detection alarm;2=input alarm;3=voice detection alarm
                    double alarm = (double)properties["alarm_status"];
                    if (alarm == 1)
                    {
                        SaveFrame(e.BitmapSource);
                    }
                }
            }
        }
 void OnFrameAvailable(object sender, FrameReadyEventArgs e)
 {
     if (e.BitmapSource == null)
     {
         CheckUnauthorized();
     }
     else
     {
         lastFrameTime = Environment.TickCount;
         HideError();
         CameraImage.Source          = e.BitmapSource;
         device.CameraInfo.LastFrame = e.BitmapSource;
     }
 }