InvokeHandler

   private delegate void InvokeHandler();
 this.Invoke(new InvokeHandler(delegate()
                                            {
                                                Waiting();
                                            }));
public void Waiting()
        {
            frmWaiting waitingBox = new frmWaiting(bw_DoWork, "数据获取中,请等待!");
            waitingBox.ShowDialog(this);
            this.tslabStatus.Text = "数据加载完成";
        }
        private void toolStripButton7_Click(object sender, EventArgs e)
        {
            this.tslabStatus.Text = "";
            //using (BackgroundWorker bw = new BackgroundWorker())
            //{
            //    bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
            //    bw.DoWork += new DoWorkEventHandler(bw_DoWork);
            //    bw.RunWorkerAsync("数据加载");
            //}      
            //_Method+=new EventHandler<EventArgs>();
            //bw_DoWork;
            //frmWaiting waitingBox = new frmWaiting(bw_DoWork, "数据获取中,请等待!");
            //waitingBox.ShowDialog(this);
            //this.tslabStatus.Text = "耗时:" + (waitingBox.getRes() / 2) + " s";
            this.Invoke(new InvokeHandler(delegate()
                                            {
                                                Waiting();
                                            }));

        }

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;


namespace ModuleParse
{
    public partial class frmWaiting : Form
    {
        
        public int i = 0;
        public frmWaiting(EventHandler<EventArgs> Method, string msg)
        {
            InitializeComponent();
            if (!string.IsNullOrEmpty(msg))
                lblTip.Text = msg;
            _Method = Method;
        }
        private EventHandler<EventArgs> _Method;
        private IAsyncResult asyncResult;
        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                i++;
                if (asyncResult.IsCompleted)
                {                    
                    this.Dispose();
                    this.Close();
                  
                } 
            }
            catch (Exception ex)
            {
                this.Close();
            }
            
        }
        //public void WriteLog(string file, string json)
        //{
        //    try
        //    {
        //        string content = (File.Exists(file) ? File.ReadAllText(file) : "");
        //        File.WriteAllText(file, content+json, Encoding.UTF8);
        //    }
        //    catch (Exception)
        //    {

        //    }
        //}
        public int getRes()
        {
            return i;
        }
        /// <summary>
        /// 窗体第一次加载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmWaitingBox_Shown(object sender, EventArgs e)
        {
            asyncResult = _Method.BeginInvoke(null, null, null,null);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
System.InvalidOperationException HResult=0x80131509 Message=指定的元素已经是另一个元素的逻辑子元素。请先将其断开连接。 Source=PresentationFramework StackTrace: 在 System.Windows.FrameworkElement.ChangeLogicalParent(DependencyObject newParent) 在 System.Windows.FrameworkContentElement.AddLogicalChild(Object child) 在 System.Windows.LogicalTreeHelper.AddLogicalChild(DependencyObject parent, Object child) 在 System.Windows.Documents.TextContainer.InsertEmbeddedObjectInternal(TextPointer position, DependencyObject embeddedObject) 在 System.Windows.Documents.TextPointer.InsertUIElement(UIElement uiElement) 在 System.Windows.Documents.BlockUIContainer.set_Child(UIElement value) 在 System.Windows.Documents.BlockUIContainer..ctor(UIElement uiElement) 在 MdPass.UI.DrugGudiesForm.Print_Click(Object sender, MouseButtonEventArgs e) 在 D:\vs_work_space\kehuduan\MdPass\UI\DrugGudiesForm.xaml.cs 中: 第 313 行 在 System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) 在 System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) 在 System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) 在 System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) 在 System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent) 在 System.Windows.UIElement.OnMouseDownThunk(Object sender, MouseButtonEventArgs e) 在 System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) 在 System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) 在 System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) 在 System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) 在 System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) 在 System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args) 在 System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted) 在 System.Windows.Input.InputManager.ProcessStagingArea() 在 System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) 在 System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) 在 System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) 在 System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 在 System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 在 MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 在 MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) 在 System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) 在 MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) 在 MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) 在 System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) 在 System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) 在 System.Windows.Window.ShowHelper(Object booleanBox) 在 System.Windows.Window.Show() 在 System.Windows.Window.ShowDialog() 此异常最初是在此调用堆栈中引发的: [外部代码] MdPass.UI.DrugGudiesForm.Print_Click(object, System.Windows.Input.MouseButtonEventArgs) (位于 DrugGudiesForm.xaml.cs 中) [外部代码]
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是刘彦宏吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值