+1. Anything like this should always be multithreaded. Nothing more
unprofessional than an app that looks like it has hung!

On Tue, Aug 24, 2010 at 6:47 PM, Cerebrus <[email protected]> wrote:
> 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