نمایش نتایج 1 تا 16 از 16

نام تاپیک: مولتی تردینگ (بخش کوچک)

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    Question مولتی تردینگ (بخش کوچک)

    سلام، بنده به WPF اومدم و یک فرمی با کاربردی مثل Splash Screen طراحی کردم، حالا تو قسمت Invoke اش موندم. قریب به یک ماهِ هر چی گشتم پیدا نکردم و جوابی نگرفتم. کسی میتونه کمک کنه؟

    2015-12-11_002034.png

  2. #2

    نقل قول: مولتی تردینگ (بخش کوچک)

    باید از کد زیر استفاده کنی
     
    System.Threading.Thread.CurrentThread.ApartmentSta te = System.Threading.ApartmentState.Unknown;
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(fals e);
    Forms.FrmLogo Frm_t;
    Thread t_Show_Form = new Thread(delegate()
    {
    Frm_t = new Forms.FrmLogo();
    Frm_t.ShowDialog();
    });


    t_Show_Form.Start();


    //عملیات محاسباتی

    t_Show_Form.Abort();


    Forms.FrmLogin f = new Forms.FrmLogin();
    if (f.ShowDialog() == DialogResult.OK)
    {
    Application.Run(new FrmMain());
    }


    آخرین ویرایش به وسیله parsdarab : جمعه 20 آذر 1394 در 00:10 صبح

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: مولتی تردینگ (بخش کوچک)

    ممنون از پاسختون




    کل کدها به این صورته:













    private static Thread _LoadingScreenThread;
    private static frmPleasewait _ls;
    private static bool _shown = false;





    public static void ShowLoadingScreen()
    {

    if (_LoadingScreenThread == null)
    {
    _LoadingScreenThread = new Thread(new ThreadStart(DoShowLoadingScreen));
    _LoadingScreenThread.SetApartmentState(ApartmentSt ate.STA);
    _LoadingScreenThread.IsBackground = true;
    _LoadingScreenThread.Start();
    }
    }








    private static frmPleasewait _ls;
    public static void CloseLoadingScreen()
    {
    System.Threading.Thread.Sleep(250);
    if (_ls != null && _ls.InvokeRequired = null)
    {
    _ls.Invoke(new MethodInvoker(CloseLoadingScreen));


    }
    else
    {
    if (_shown)
    {
    _shown = false;
    Application.ExitThread();
    }
    if (_LoadingScreenThread != null) _LoadingScreenThread.Interrupt();




    try
    {
    _ls.Close();
    _ls.Dispose();




    }
    catch
    {




    }




    _LoadingScreenThread = null;
    }
    }











    private static void DoShowLoadingScreen()
    {
    _ls = new frmPleasewait();
    _ls.pictureBox1.Enabled = true;
    _ls.ShowDialog();
    }




    private void frmPleasewait_Load(object sender, EventArgs e)
    {
    this.Activate();
    }




    }





































    فقط همون بخش رو تغییر بدم کافیه؟

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: مولتی تردینگ (بخش کوچک)

    در واقع یک برنامه هست که اطلاعات رو در بانک ذخیره میکنه. (یک برنامه خیلی ساده اس دیگه)

    حالا اگر تعداد داده ها زیاد باشه، بیشتر طول میکشه تا داده جدید ذخیره بشه. من یک فرم ساختم برای نشون داده منتظر بمانید، فقط حالا میخوام زمان بسته شدن فرم به اندازه مدت زمانی باشه که پردازش طول میکشه و انجام میشه، نه اینکه تایمر بذارم و ...

  5. #5

    نقل قول: مولتی تردینگ (بخش کوچک)

    اره اول با نخ فرمو نمایش میدی بعد از اتمام عملیات نخ رو نابود می کنی

    این کد باید در ابتدا نوشته بشه توی wpf نمی دونم اما windows application در قسمت main نوشته میشه

  6. #6
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: مولتی تردینگ (بخش کوچک)

    نقل قول نوشته شده توسط parsdarab مشاهده تاپیک
    باید از کد زیر استفاده کنی
     
    System.Threading.Thread.CurrentThread.ApartmentSta te = System.Threading.ApartmentState.Unknown;
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(fals e);
    Forms.FrmLogo Frm_t;
    Thread t_Show_Form = new Thread(delegate()
    {
    Frm_t = new Forms.FrmLogo();
    Frm_t.ShowDialog();
    });


    t_Show_Form.Start();


    //عملیات محاسباتی

    t_Show_Form.Abort();


    Forms.FrmLogin f = new Forms.FrmLogin();
    if (f.ShowDialog() == DialogResult.OK)
    {
    Application.Run(new FrmMain());
    }


    این ساختار برای WPF کار نمیکنه

  7. #7

    نقل قول: مولتی تردینگ (بخش کوچک)

    تایمر استفاده نشده

  8. #8

    نقل قول: مولتی تردینگ (بخش کوچک)

    کجاش کار نمیکنه

  9. #9
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: مولتی تردینگ (بخش کوچک)

    به این صورت هست

    2015-12-11_005839.png

  10. #10
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: مولتی تردینگ (بخش کوچک)

    نقل قول نوشته شده توسط parsdarab مشاهده تاپیک
    تایمر استفاده نشده
    بله درسته، بنده اون متن رو نوشتم تا بگم هدف قطع شدن نخ پس از اتمام پردازش هست، نه اینکه دستی زمان بدیم

  11. #11

    نقل قول: مولتی تردینگ (بخش کوچک)

    جیگر اسم فرماتو عوض کن

    name space ها رو اضافه کن

  12. #12
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: مولتی تردینگ (بخش کوچک)

    دیگه اینقدر بلدم

    بحث اینجاس که ما توی WPF چیزی به اسم Current Thread، Form_logo و ... نداریم.

  13. #13
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: مولتی تردینگ (بخش کوچک)

    کسی نیست مولتی تردینگ در WPF رو انجام داده باشه؟

  14. #14

    نقل قول: مولتی تردینگ (بخش کوچک)

    البته جای کار داره دیگه حوصلم نشد بیشتر کار کنم




    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;


    namespace WpfApplication1
    {
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
    public MainWindow()
    {


    InitializeComponent();
    }


    private void Button_Click(object sender, RoutedEventArgs e)
    {


    Window1 Frm_t = new Window1();


    this.Dispatcher.Invoke((Action)(() =>
    {
    Frm_t.Show();
    }));


    Thread.Sleep(5000);
    Frm_t.Close();


    }
    }
    }



  15. #15
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: مولتی تردینگ (بخش کوچک)

    بنده انجام دادم، برنامه رو اجرا کردم اما نخ ها عمل نکردن

  16. #16
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: مولتی تردینگ (بخش کوچک)

    بنده تا اینجا پیش رفتم. فقط معادل Method Invoker رو میخوام


تاپیک های مشابه

  1. مولتی تردینگ
    نوشته شده توسط bachebahal_1363 در بخش C#‎‎
    پاسخ: 5
    آخرین پست: شنبه 25 خرداد 1387, 23:37 عصر
  2. کوچک کردن عنوان بخش ها
    نوشته شده توسط Mohammad_Mnt در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 3
    آخرین پست: پنج شنبه 12 خرداد 1384, 22:06 عصر
  3. پیشنهاد یک بخش
    نوشته شده توسط mahmoodreza در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 1
    آخرین پست: شنبه 09 فروردین 1382, 17:48 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •