Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

code for showing alert in windows forms using C#

Posted on 2009-03-31
11
Medium Priority
?
2,816 Views
Last Modified: 2012-06-27

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

0
Comment
Question by:coventri
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 3
  • 3
11 Comments
 
LVL 11

Expert Comment

by:bmatumbura
ID: 24029118
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
 
LVL 6

Expert Comment

by:Cebik
ID: 24029138

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
 
LVL 6

Expert Comment

by:Cebik
ID: 24029153
exactly :)
i was writing example :)
0
Get your Conversational Ransomware Defense e‑book

This e-book gives you an insight into the ransomware threat and reviews the fundamentals of top-notch ransomware preparedness and recovery. To help you protect yourself and your organization. The initial infection may be inevitable, so the best protection is to be fully prepared.

 
LVL 1

Author Comment

by:coventri
ID: 24029494
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
 
LVL 6

Accepted Solution

by:
Cebik earned 1000 total points
ID: 24029532
use this IF statement

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

Open in new window

0
 
LVL 6

Expert Comment

by:Cebik
ID: 24029589

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
 
LVL 11

Expert Comment

by:bmatumbura
ID: 24029632
Cebi - Don't you think the expression should be:

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

Open in new window

0
 
LVL 6

Expert Comment

by:Cebik
ID: 24029636
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
 
LVL 1

Author Comment

by:coventri
ID: 24030190

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
 
LVL 1

Author Comment

by:coventri
ID: 24030208
it should only show alert when disk reaches 80% , rest of that it should not show any alert
0
 
LVL 11

Assisted Solution

by:bmatumbura
bmatumbura earned 1000 total points
ID: 24030397
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

Featured Post

Veeam Disaster Recovery in Microsoft Azure

Veeam PN for Microsoft Azure is a FREE solution designed to simplify and automate the setup of a DR site in Microsoft Azure using lightweight software-defined networking. It reduces the complexity of VPN deployments and is designed for businesses of ALL sizes.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…

636 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question