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

نام تاپیک: کاهش سرعت برنامه در زمان افزودن شی به فرم

  1. #1

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

    سلام وقت بخیر
    من برای بارگذاری تمامی فایلهای موجود در یک درایو یا فولدر و نمایش اونها توی فرم برنامه از کدهای زیر استفاده کردم و تمامی روشهای Parralel و تسک های موازی رو اجرا کردم ولی مشگل اینه که اگر تعداد فایلها زیاد باشه فرم تا اتمام بارگذاری هنگ میکنه نمونه کدها رو میزارم اگر میتونید کمک کنید تا فرم برنامه کاهش سرعت نداشته باشه ممنون


    private void LoadFolderAndFilesPanel()
    {
    new Task(() =>
    {
    try
    {

    //Load Folders
    InEachPanel = (PComp.Size.Width - 30) / FixedSize.Width;
    int FileCount = FolderANdFileName[CS.Value].Files.Count();
    int FolderCount = FolderANdFileName[CS.Value].Folders.Count();

    FLPindex = 0;
    NodeCounter = 0;

    var tasks = new List<Task>();

    for (int i = 0; i < FolderCount; i++)
    {
    int Idx = i;
    tasks.Add(Task.Run(() =>
    {
    lock (LoadPanel)
    {
    CreateFolderPanel(Idx);
    }
    }));
    }

    Task.WaitAll(tasks.ToArray());
    tasks.Clear();

    for (int i = 0; i < FileCount; i++)
    {
    int Idx = i;
    tasks.Add(Task.Run(() =>
    {
    lock (LoadPanel)
    {
    CreateFilePanel(Idx);

    }
    }));
    }
    Task.WhenAll(tasks.ToArray());


    ProgressBar.Value = 0;
    }
    catch (Exception ex)
    {
    //
    }
    }).Start();
    }
    void CreateFilePanel(int index)
    {
    try
    {
    var act = new Action(() =>
    {
    if (NodeCounter >= InEachPanel || FLPindex == 0)
    {
    FLP.Add(new FlowLayoutPanel());
    FLP[FLPindex].Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windo ws.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
    FLP[FLPindex].FlowDirection = FlowDirection.LeftToRight;
    FLP[FLPindex].WrapContents = false;
    FLP[FLPindex].BackColor = System.Drawing.Color.Transparent;
    FLP[FLPindex].Size = new Size(PComp.Size.Width - 30, FixedSize.Height + 9);
    FLPindex++;
    NodeCounter = 0;

    MLP.Controls.Add(FLP[FLPindex - 1]);
    MLP.Refresh();

    }
    if ((FolderANdFileName[CS.Value].FilesIsHidden[index].CompareTo(true) == 0 && CHBHiddenFilesAndFolders.Checked) || FolderANdFileName[CS.Value].FilesIsHidden[index].CompareTo(false) == 0)
    {
    FlowLayoutPanel SubFLP = new FlowLayoutPanel();
    SubFLP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windo ws.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
    SubFLP.Name = " SubFLP" + index.ToString();
    SubFLP.Size = FixedSize;
    SubFLP.FlowDirection = FlowDirection.TopDown;
    SubFLP.WrapContents = false;
    SubFLP.Tag = index;
    SubFLP.BackColor = System.Drawing.Color.Transparent;
    //
    PictureBox PBox = new PictureBox();
    PBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windo ws.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
    PBox.Enabled = true;
    PBox.Name = FolderANdFileName[CS.Value].Files[index];
    PBox.Tag = SubFLP;
    PBox.AutoSize = true;
    string[] RetExtenstion = FolderANdFileName[CS.Value].Files[index].Split('.');
    if (RetExtenstion != null)
    {
    if (ImgLst.Images.Keys.Contains(RetExtenstion[RetExtenstion.Count() - 1] + ".png"))
    {
    PBox.Image = ImgLst.Images[RetExtenstion[RetExtenstion.Count() - 1] + ".png"];
    }
    else
    PBox.Image = ImgLst.Images["blank.png"];
    }
    else
    PBox.Image = ImgLst.Images["blank.png"];
    PBox.Cursor = Cursors.Hand;
    PBox.Click += new System.EventHandler(PBoxFile_Click);
    PBox.MouseHover += PBox_MouseHover;
    PBox.MouseLeave += PBox_MouseLeave;
    var Margin = PBox.Margin;
    int LeftMargin = ((FixedSize.Width - ImgLst.ImageSize.Width) / 2) - 2;
    PBox.Margin = new System.Windows.Forms.Padding(LeftMargin, Margin.Top, Margin.Right, Margin.Bottom);
    PBox.BackColor = Color.Transparent;
    SubFLP.Controls.Add(PBox);

    Label lblFileName = new Label();
    lblFileName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windo ws.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
    lblFileName.Enabled = true;
    lblFileName.BackColor = Color.Transparent;
    lblFileName.Size = new System.Drawing.Size(FixedSize.Width - 5, 25);
    lblFileName.TabIndex = 0;
    lblFileName.Name = FolderANdFileName[CS.Value].Files[index];
    lblFileName.Text = FolderANdFileName[CS.Value].Files[index];
    lblFileName.Tag = SubFLP;
    lblFileName.Cursor = Cursors.Hand;
    lblFileName.Click += lblFile_Click;
    lblFileName.MouseHover += lbl_MouseHover;
    lblFileName.MouseLeave += lbl_MouseLeave;
    lblFileName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
    System.Windows.Forms.ToolTip TT = new System.Windows.Forms.ToolTip();
    TT.SetToolTip(lblFileName, FolderANdFileName[CS.Value].Files[index]);
    SubFLP.Controls.Add(lblFileName);

    FLP[FLPindex - 1].Controls.Add(SubFLP);
    FLP[FLPindex - 1].Refresh();
    NodeCounter++;

    }
    });
    if (InvokeRequired)
    BeginInvoke(act);
    else
    act();
    }
    catch (Exception ex)
    {
    //
    }
    }
    آخرین ویرایش به وسیله pouria_bayat : دوشنبه 16 فروردین 1395 در 19:00 عصر

  2. #2

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

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

  3. #3

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

    ممنون یکی از دوستان راهنمایی خوبی کرد گفت برای افزایش سرعت از Treeview آستفاده کنم ، چک کردم خیلی خوب جواب

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

  1. سوال: افزودن شی به فرم اصلی که در کلاسی دیگر تعریف شده است
    نوشته شده توسط csharpdoost در بخش C#‎‎
    پاسخ: 2
    آخرین پست: چهارشنبه 01 خرداد 1392, 01:06 صبح
  2. آیا استفاده از فیلدهای زیاد در جدول با کاهش سرعت برنامه در ارتباط هست؟
    نوشته شده توسط javad_r_85 در بخش تحلیل و طراحی بانک اطلاعات
    پاسخ: 3
    آخرین پست: چهارشنبه 21 اردیبهشت 1390, 14:05 عصر
  3. گفتگو: کمک فوری: ضمیمه کردن یک فایل به برنامه در زمان اجرا
    نوشته شده توسط system32 در بخش C#‎‎
    پاسخ: 2
    آخرین پست: چهارشنبه 27 آبان 1388, 17:29 عصر
  4. مديريت شي هاي برنامه در زمان طراحی( کسي اين ابزار رو نداره؟؟ مثل Panel vb.net )
    نوشته شده توسط حمید محمودی در بخش برنامه نویسی در 6 VB
    پاسخ: 12
    آخرین پست: یک شنبه 01 شهریور 1388, 00:10 صبح
  5. به دست آوردن مسیر برنامه در زمان Setup؟
    نوشته شده توسط majid325 در بخش Setup و Deployment
    پاسخ: 3
    آخرین پست: یک شنبه 02 تیر 1387, 14:10 عصر

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

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