Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7601703
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 30, 20262026-05-30T23:13:44+00:00 2026-05-30T23:13:44+00:00

private void but_Click(object sender, RoutedEventArgs e) { (sender as Button).IsEnabled = false; doSomeThing();//e.g run

  • 0
private void but_Click(object sender, RoutedEventArgs e)
{
    (sender as Button).IsEnabled = false;
    doSomeThing();//e.g run for more than 20 seconds
    (sender as Button).IsEnabled = true;
}

When I press the button at first time it disables. Then starts doSomeThing() and it contains UI code or some UI variable updated.
I mean while if I press the button again while doSomeThing() is in progress then but_Click event fires again after this button enables back.
It maintains queue of event fired,i.e. n number of times which i pressed.

So, how to prevent firing event while button is disabled?
Please consider in this scenario ‘doSomething’ contains UI controls bind to code. So we can’t run background Thread in this case.
Help me with solution.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-30T23:13:45+00:00Added an answer on May 30, 2026 at 11:13 pm

    The issue with this code is doSomeThing() method is running in UI Thread. So, the Button is not properly disabled. If we refactor the code so that doSomeThing() method runs in a different thread, it will just work fine. Here is a simple example using BackgroundWorker; however the idea is we should not run time consuming stuffs in UI thread. Here is the refactored code:

    public partial class ButtonEnableTest : Window
    {
        private BackgroundWorker worker = new BackgroundWorker();
    
        public ButtonEnableTest()
        {
            InitializeComponent();
            this.worker.DoWork += new DoWorkEventHandler(worker_DoWork);
            this.worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
        }
    
        void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (this.btn.IsEnabled == false)
            {
                this.btn.IsEnabled = true;
            }
        }
    
        void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            doSomeThing();
        }
    
        private void doSomeThing()
        {
            int i = 5;
            while ( i > 0)
            {
                Thread.Sleep(TimeSpan.FromMilliseconds(2000));
                System.Diagnostics.Debug.WriteLine("Woke up " + i);
                i--;
            }
        }
    
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Button btn = (Button) sender;
            System.Diagnostics.Debug.WriteLine("at ButtonClick");
            if (btn.IsEnabled)
            {
                btn.IsEnabled = false;
                this.worker.RunWorkerAsync();
            }
        }
    }
    

    I did not follow any coding conversions here as I just wanted to share my idea. Please note that, I named the WPF button as “btn”.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have this on a button: private void Button_Click(object sender, RoutedEventArgs e) { string
private void button_Click(object sender, RoutedEventArgs e) { var button = (Button) sender; var stackPanel
A colleague of mine refactored this code: private void btnGeneral_Click(object sender, RoutedEventArgs e) {
private void btnTest_Click(object sender, RoutedEventArgs e) { try { worker.DoWork += delegate(object s, DoWorkEventArgs
I have this code: private void ModifyButton_Click(object sender, RoutedEventArgs e) { ModifyButton.Content = Another
Got this line of code here but its not working. private void Button_Click(object sender,
. private void Form1_Load(object sender, EventArgs e) { List<CaclulatedData> tests = new List<CaclulatedData> {
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (e.CloseReason == CloseReason.UserClosing) { if (MessageBox.Show(this,
In my application I have a Submit button that does this: private void Submit_button_Click(object
In WPF, a button and a click event is: <Button Click=Btn_Click /> private void

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.