Пример #1
0
        public void Wait(WaitHandle[] waitHandles)
        {
            if (waitHandles == null)
                throw new ArgumentNullException("waitHandles");
            if (waitHandles.Length == 0 || waitHandles.Any(p => p == null))
                throw new ArgumentException("Wait handles cannot be of zero length and cannot contain null entries");

            var waitHandlePointers = waitHandles.Select(p => p.SafeWaitHandle.DangerousGetHandle()).ToArray();

            if (_waitDialog == null)
            {
                var factory = (INiWaitDialogFactory)_serviceProvider.GetService(typeof(INiWaitDialogFactory));
                ErrorUtil.ThrowOnFailure(factory.CreateInstance(out _waitDialog));
            }

            ErrorUtil.ThrowOnFailure(_waitDialog.ShowWaitDialog(
                Caption,
                Message,
                ProgressText,
                StatusBarText,
                ShowDelay,
                CanCancel,
                ShowRealProgress,
                Progress,
                waitHandlePointers
            ));

            ErrorUtil.ThrowOnFailure(_waitDialog.HasCanceled(out _hasCancelled));
        }