code for showing alert in windows forms using C#


Can any one provide  code for creating alert for low diskspace using C# in my windows application form.
i have only one drive(say C drive). If available disk space reaches 80%, it should automatically show alert as low disk space.
can you help me i providing sample code.

i have taken button and writen code , but it checks only if press the button.
instead i need automatic alert which can pop up when available disk space reaches 80%.
private void btnSample_Click(object sender, EventArgs e)
        {
            
            ArrayList df = new ArrayList();
            DriveInfo[] driveListess = DriveInfo.GetDrives();
 
            
 
 
			
            // Loop through the list of drives
            
            
            foreach (DriveInfo driven in driveListess)
            {
                try
                {
                    if (driven.TotalFreeSpace == 0)
                    {
                        df.Add(driven.Name.ToString() + ": Disk is full . Please check ");
                    }
                    else
                    {
                        df.Add(driven.Name.ToString() + " Drive does not have space. Do you wish to delete some of the files? "); 
                     
                    }
                    
                }
 
                                                    
 
                 catch(Exception ex)
 
                {
                    FreeSpace = 0;
                    TotalSize = 0;
                    UsedSpace = 0;
                    Sweep = 0;
                    lblFileSystem.Text = "N/A";
                    lblFreeSpace.Text = "N/A";
                    lblUsedSpace.Text = "N/A";
                    lblTotalSize.Text = "N/A";
                }
                
            }
            string Alertmsg =  "      " ;
 
            foreach (string str in df)
            {
                Alertmsg += str + Environment.NewLine;
                
            }
             MessageBox.Show(Alertmsg.ToString(),"Alert",MessageBoxButtons.OK,MessageBoxIcon.Warning);
 
        }

Open in new window

LVL 1
coventriAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
CebikConnect With a Mentor Commented:
use this IF statement

if (driven.TotalFreeSpace < ((double)driven.TotalSize * 0.80d))

Open in new window

0
 
bmatumburaCommented:
Put a timer on the form and set it to execute every few seconds. Call your function from the Elapsed event of the time.
0
 
CebikCommented:

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Timer timer;
 
        public Form1()
        {
            InitializeComponent();
 
            timer = new Timer();
            timer.Interval = 5000; //every 5 sec for example
            timer.Tick += new EventHandler(timer_Tick);
            timer.Enabled = true;
        }
 
        void timer_Tick(object sender, EventArgs e)
        {
            //put yor methode here..
        }
    }
}

Open in new window

0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
CebikCommented:
exactly :)
i was writing example :)
0
 
coventriAuthor Commented:
But i need code that gives alert automatically when disk space reaches 80%.

in the above code ,i have taken when the disk space is complete.

instead it shouls show alert when disk space reaches 80% of used space
0
 
CebikCommented:

if (driven.TotalFreeSpace < ((double)driven.TotalSize * 0.80d))
{
    df.Add(driven.Name.ToString() + ": Disk low free space. " + HumanReadableSize(driven.TotalFreeSpace));
}
 
public string HumanReadableSize(double len)
{
    string[] sizes = { "B", "KB", "MB", "GB" };
    int order = 0;
    while (len >= 1024 && order + 1 < sizes.Length)
    {
        order++;
        len = len / 1024;
    }
    string result = String.Format("{0:0.##} {1}", len, sizes[order]);
    return result;
 
}

Open in new window

0
 
bmatumburaCommented:
Cebi - Don't you think the expression should be:

if (driven.TotalFreeSpace < ((double)driven.TotalSize * 0.20d))

Open in new window

0
 
CebikCommented:
sorry :)
100 - 80 = 20%

if (driven.TotalFreeSpace < (driven.TotalSize * 0.20d))
            {
                df.Add(driven.Name.ToString() + ": Disk low free space. " + HumanReadableSize(driven.TotalFreeSpace));
            }

Open in new window

0
 
coventriAuthor Commented:

The problem here is

in any case it is running only else part

else
                        {

                            df.Add(driven.Name.ToString() + " Drive is Full . Please check");
                        }

even if i take 0.2 or 0.8 it is giving only else part as output

atached is my code in timer1

private void timer1_Tick(object sender, EventArgs e)
        {

            {

                ArrayList df = new ArrayList();
                DriveInfo[] driveListess = DriveInfo.GetDrives();





                // Loop through the list of drives


                foreach (DriveInfo driven in driveListess)
                {
                    try
                    {
                        if (driven.TotalFreeSpace < (driven.TotalSize * 0.20d))



                        {
                           
                            df.Add(driven.Name.ToString() + " Please check");
                        }
                        else
                        {

                            df.Add(driven.Name.ToString() + " Drive is Full . Please check");
                        }

                    }



                    catch (Exception ex)
                    {
                        FreeSpace = 0;
                        TotalSize = 0;
                        UsedSpace = 0;
                        Sweep = 0;
                        lblFileSystem.Text = "N/A";
                        lblFreeSpace.Text = "N/A";
                        lblUsedSpace.Text = "N/A";
                        lblTotalSize.Text = "N/A";
                    }

                }
                string Alertmsg = "      ";

                foreach (string str in df)
                {
                    Alertmsg += str + Environment.NewLine;

                }
                MessageBox.Show(Alertmsg.ToString(), "Alert", MessageBoxButtons.OK, MessageBoxIcon.Warning);

            }  

        }
0
 
coventriAuthor Commented:
it should only show alert when disk reaches 80% , rest of that it should not show any alert
0
 
bmatumburaConnect With a Mentor Commented:
Additional checks will have to be done to achieve this. A possible solution would be to stop the timer just before the dialog is displayed. i.e. use

timer.Enabled = false;

just before the MessageBox.Show statement
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.