One word: Multithreading. It is the only way to keep your UI
responsive during long running processes.

If you're new to Multithreading, use the BackgroundWorker class (.NET
2+).

On Aug 23, 11:22 pm, Booter <[email protected]> wrote:
> Hello All,
>
> I have been tinkering around with some C# applications that I wrote
> over the summer for my job.  The one that I have a question about is a
> simple app that connects to network printers.  The user chooses which
> lab printers they want to map and it will map them.  I was trying to
> incorporate a loading bar so that the user doesn't sit there and keep
> clicking my "Map Printers" button since right now it seems like the
> program just stalls.
>
> Now my problem is that when run the program goes into a "This program
> is not responding" phase but will still map the printers so to the end
> user it appears that the application just crashed and didn't map their
> printers.
>
> Any help/ suggestions to make my app better would be greatly
> appriciated.
>
> Booter
>
> *****************************CODE**************************
>
> using System;
> using System.Collections.Generic;
> using System.ComponentModel;
> using System.Data;
> using System.Drawing;
> using System.Linq;
> using System.Text;
> using System.Windows.Forms;
> using System.Runtime.InteropServices;
>
> namespace WindowsFormsApplication1
> {
>
>     public partial class Form1 : Form
>     {
>         // Set up AV Print array
>         String[] avArray = new string[] {"\\\\sith\\orion","\\\\sith\
> \color_orion","\\\\sith\\sun_av_classroom"};
>
>         // Set up Anderson Print Array
>         String[] anderArray = new string[] {"\\\\sith\\Anderson1","\\\
> \sith\\color_anderson"};
>
>         // Set up Cafe Print array
>         String[] cafeArray = new string[] {"\\\\sith\\cafe","\\\\sith\
> \color_cafe"};
>
>         // Set up ERC Classroom Print Array
>         String[] ercClassArray = new string[] {"\\\\sith\\erc","\\\
> \sith\\color_erc"};
>
>         // Set up ERC Design Print array
>         String[] ercDesignArray = new string[] {"\\\\sith\
> \erc_studio","\\\\sith\\erc","\\\\sith\\color_erc"};
>
>         // Set up GIS Print Array
>         String[] gisArray = new string[] {"\\\\sith\\gis","\\\\sith\
> \color_gis"};
>
>         // Set up Merc Print array
>         String[] mercArray = new string[] {"\\\\sith\\merc","\\\\sith\
> \color_merc"};
>
>         // Set up Mag Print Array
>         String[] magArray1 = new string[] {"\\\\sith\\magellan1","\\\
> \sith\\color_magellan","\\\\sith\\magellan2","\\\\sith\\big_plotter","\
> \\\sith\\little_plotter"};
>
>         // Set up Mag Print Array
>         String[] magArray2 = new string[] { "\\\\sith\\magellan2", "\\\
> \sith\\color_magellan", "\\\\sith\\magellan1", "\\\\sith\
> \big_plotter", "\\\\sith\\little_plotter" };
>
>         // Set up Titan Print array
>         String[] titanArray = new string[] {"\\\\sith\\titan","\\\\sith
> \\magellan1","\\\\sith\\color_magellan","\\\\sith\\magellan2","\\\\sith
> \\big_plotter","\\\\sith\\little_plotter"};
>
>         // Set up Viking Print Array
>         String[] vikingArray = new string[] { "\\\\sith\\Viking", "\\\
> \sith\\magellan1", "\\\\sith\\color_magellan", "\\\\sith\\magellan2",
> "\\\\sith\\big_plotter", "\\\\sith\\little_plotter" };
>
>         [DllImport("winspool.drv")]
>         public static extern bool AddPrinterConnection(string pName);
>
>         List<string> mappedPrinters = new List<string>();
>         List<string> notMappedPrinters = new List<string>();
>
>         int totalChosen;
>         int totalMaped = 0;
>
>         public Form1()
>         {
>             InitializeComponent();
>         }
>
>         public void mapPrinters()
>         {
>             if(AV.Checked)
>             {
>                 //map AV
>                 foreach(string c in avArray)
>                 {
>                     label1.Text = "Attempting to map " + c;
>                     if (AddPrinterConnection(c))
>                     {
>
>                         mappedPrinters.Add(c);
>                     }
>                     else
>                     {
>
>                         notMappedPrinters.Add(c);
>                     }
>                     progressBar1.Value++;
>                 }
>             }
>             if(Ander.Checked)
>             {
>                 //map ander
>                  foreach(string c in anderArray)
>                 {
>                     label1.Text = "Attempting to map " + c;
>                     if (AddPrinterConnection(c))
>                     {
>
>                         mappedPrinters.Add(c);
>                     }
>                     else
>                     {
>
>                         notMappedPrinters.Add(c);
>                     }
>                     progressBar1.Value++;
>                 }
>             }
>             if(ERC_Class.Checked)
>             {
>                 //map ercClass
>                  foreach(string c in ercClassArray)
>                     if (AddPrinterConnection(c))
>                     {
>
>                         mappedPrinters.Add(c);
>                     }
>                     else
>                     {
>
>                         notMappedPrinters.Add(c);
>                     }
>                     progressBar1.Value++;
>             }
>             if(ERC_Design.Checked)
>             {
>                 //map ercDesign
>                  foreach(string c in ercDesignArray)
>                 {
>                     label1.Text = "Attempting to map " + c;
>                     if (AddPrinterConnection(c))
>                     {
>
>                         mappedPrinters.Add(c);
>                     }
>                     else
>                     {
>
>                         notMappedPrinters.Add(c);
>                     }
>                     progressBar1.Value++;
>                 }
>             }
>             if(GIS.Checked)
>             {
>                 //map gis
>                  foreach(string c in gisArray)
>                 {
>                     label1.Text = "Attempting to map " + c;
>                     if (AddPrinterConnection(c))
>                     {
>
>                         mappedPrinters.Add(c);
>                     }
>                     else
>                     {
>
>                         notMappedPrinters.Add(c);
>                     }
>                     progressBar1.Value++;
>                 }
>             }
>             if(I_Cafe.Checked)
>             {
>                 //map cafe
>                  foreach(string c in cafeArray)
>                 {
>                     label1.Text = "Attempting to map " + c;
>                     if (AddPrinterConnection(c))
>                     {
>
>                         mappedPrinters.Add(c);
>                     }
>                     else
>                     {
>
>                         notMappedPrinters.Add(c);
>                     }
>                     progressBar1.Value++;
>                 }
>             }
> //             if(IRC.Checked)
> //            {
> //               //map IRC PRINTER
> //                if (AddPrinterConnection("129.82.106.197"))
> //                    MessageBox.Show("Printer at the IRC Lab is
> mapped");
> //                else
> //                    MessageBox.Show("Printer at the IRC Lab was not
> mapped");
> //
> //           }
>             if(Mag.Checked)
>             {
>                 //map mag
>                 foreach (string c in magArray1)
>                 {
>                     label1.Text = "Attempting to map " + c;
>                     if (AddPrinterConnection(c))
>                     {
>
>                         mappedPrinters.Add(c);
>                     }
>                     else
>                     {
>
>                         notMappedPrinters.Add(c);
>                     }
>                     progressBar1.Value++;
>                 }
>             }
>             if(MERC.Checked)
>             {
>                 //map merc
>                  foreach(string c in mercArray)
>                 {
>                     label1.Text = "Attempting to map " + c;
>                     if (AddPrinterConnection(c))
>                     {
>
>                         mappedPrinters.Add(c);
>                     }
>                     else
>                     {
>
>                         notMappedPrinters.Add(c);
>                     }
>                     progressBar1.Value++;
>                 }
>             }
>             if(titan.Checked)
>             {
>                 //map titan
>                  foreach(string c in titanArray)
>                 {
>                     label1.Text = "Attempting to map " + c;
>                       if (AddPrinterConnection(c))
>                     {
>
>                         mappedPrinters.Add(c);
>                     }
>                     else
>                     {
>
>                         notMappedPrinters.Add(c);
>                     }
>                     progressBar1.Value++;
>                 }
>             }
>             if(viking.Checked)
>             {
>                 //map viking
>                  foreach(string c in vikingArray)
>                 {
>                     label1.Text = "Attempting to map " + c;
>                         if (AddPrinterConnection(c))
>                     {
>
>                         mappedPrinters.Add(c);
>                     }
>                     else
>                     {
>
>                         notMappedPrinters.Add(c);
>                     }
>                     progressBar1.Value++;
>                 }
>             }
>
>             if (notMappedPrinters.Count != 0)
>             {
>                 string prompt = "Printers not mapped: \n";
>                 foreach (string c in notMappedPrinters)
>                 {
>                     prompt = prompt + c + "\n";
>                 }
>                 MessageBox.Show(prompt);
>             }
>             if (mappedPrinters.Count != 0)
>             {
>                 string prompt = "Printers mapped: \n";
>                 foreach (string c in mappedPrinters)
>                 {
>                     prompt = prompt + c + "\n";
>                 }
>                 MessageBox.Show(prompt);
>             }
>
>         }
>
>         private void map_printers_Click(object sender, EventArgs e)
>         {
>             totalChosen = sum();
>             progressBar1.Maximum = totalChosen;
>             label1.Text = "Please wait.  Initialzing program";
>             mapPrinters();
>
>         }
>
>         private void Exit_app_Click(object sender, EventArgs e)
>         {
>             Application.Exit();
>         }
>
>         private int sum()
>         {
>             int sum = 0;
>
>             if (AV.Checked)
>                 sum = sum + avArray.Length;
>             if (Ander.Checked)
>                 sum = sum + anderArray.Length;
>             if (ERC_Class.Checked)
>                 sum = sum + ercClassArray.Length;
>             if (ERC_Design.Checked)
>                 sum = sum + ercDesignArray.Length;
>             if (GIS.Checked)
>                 sum = sum + gisArray.Length;
>             if (I_Cafe.Checked)
>                 sum = sum + cafeArray.Length;
>             //             if(IRC.Checked)
>             //            {
>             //               //map IRC PRINTER
>             //                if
> (AddPrinterConnection("129.82.106.197"))
>             //                    MessageBox.Show("Printer at the IRC
> Lab is mapped");
>             //                else
>             //                    MessageBox.Show("Printer at the IRC
> Lab was not mapped");
>             //
>             //           }
>             if (Mag.Checked)
>                 sum = sum + magArray1.Length;
>             if (MERC.Checked)
>                 sum = sum + mercArray.Length;
>             if (titan.Checked)
>                 sum = sum + titanArray.Length;
>             if (viking.Checked)
>                 sum = sum + vikingArray.Length;
>
>             return sum;
>
>         }
>     }
>
>
>
> }- Hide quoted text -
>
> - Show quoted text -

Reply via email to