Home Backend Development C#.Net Tutorial c# multi-threaded access interface

c# multi-threaded access interface

Dec 21, 2016 pm 02:46 PM

After C#2005, multi-threaded direct access to interface controls is no longer supported (the interface creation thread and the access thread are not the same thread), but it can be solved by using delegate:

1. Declare a delegate and define a delegate implementation function
view plaincopy to clipboardPRint?
delegate void ShowProgressDelegate(int newPos);
private void ShowProgress(int newPos)
{
// Determine whether the access is in the thread
if (!_progressBar.InvokeRequired)
{
// If not, operate directly Control
_progressBar.Value = newPos;
}
else
{
// If yes, enable delegate access
ShowProgressDelegate showProgress = new ShowProgressDelegate(ShowProgress);
// If you use Invoke, it will wait until the function call is completed, but BeginInvoke will not wait direct Go back
this.BeginInvoke(showProgress, new object[] { newPos });
}
}
delegate void ShowProgressDelegate(int newPos);
private void ShowProgress(int newPos)
{
// Determine whether it is in the thread Access
if (!_progressBar.InvokeRequired)
{
// If not, operate the control directly
_progressBar.Value = newPos;
}
else
{
// If yes, enable delegate access
ShowProgressDelegate showProgress = new ShowProgressDelegate(ShowProgress);
// If you use Invoke, you will wait until the function call ends, but BeginInvoke will not wait and go straight back.
this.BeginInvoke(showProgress, new object[] { newPos });
}
}

2. Define the thread function (in Interface controls can be read in another thread)
view plaincopy to clipboardprint?
private void ProgressStart()
{
while (true)
{
int newPos = _progressBar.Value + 10;
if (newPos > _progressBar .Maximum)
{
newPos = _progressBar.Minimum;
}
Trace.WriteLine(string.Format("Pos: {0}", newPos));
// The method is called directly here, and it will automatically determine whether it is enabled or not. delegate
ShowProgress(newPos);
Thread.Sleep(100);
}
}
private void ProgressStart()
{
while (true)
{
int newPos = _progressBar.Value + 10;
if (newPos > _progressBar.Maximum)
{
newPos = _progressBar.Minimum;
}
Trace.WriteLine(string.Format("Pos: {0}", newPos));
// The method is called directly here, and it is automatically determined internally whether Enable delegate
ShowProgress(newPos);
Thread.Sleep(100);
}
}

3. Thread startup and termination
view plaincopy to clipboardprint?
private Thread _progressThread;
_progressThread = new Thread(new ThreadStart(ProgressStart ));
// Optional, function: Even if the thread does not end, the process can end
_progressThread.IsBackground = true;
_progressThread.Start();
_progressThread.Abort();
// Optional, function: Wait until the thread ends before continuing
_progressThread.Join();
_progressThread = null;

The above is the content of the c# multi-thread access interface. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Active Directory with C# Active Directory with C# Sep 03, 2024 pm 03:33 PM

Guide to Active Directory with C#. Here we discuss the introduction and how Active Directory works in C# along with the syntax and example.

Random Number Generator in C# Random Number Generator in C# Sep 03, 2024 pm 03:34 PM

Guide to Random Number Generator in C#. Here we discuss how Random Number Generator work, concept of pseudo-random and secure numbers.

Access Modifiers in C# Access Modifiers in C# Sep 03, 2024 pm 03:24 PM

Guide to the Access Modifiers in C#. We have discussed the Introduction Types of Access Modifiers in C# along with examples and outputs.

C# Data Grid View C# Data Grid View Sep 03, 2024 pm 03:32 PM

Guide to C# Data Grid View. Here we discuss the examples of how a data grid view can be loaded and exported from the SQL database or an excel file.

C# Serialization C# Serialization Sep 03, 2024 pm 03:30 PM

Guide to C# Serialization. Here we discuss the introduction, steps of C# serialization object, working, and example respectively.

Patterns in C# Patterns in C# Sep 03, 2024 pm 03:33 PM

Guide to Patterns in C#. Here we discuss the introduction and top 3 types of Patterns in C# along with its examples and code implementation.

Prime Numbers in C# Prime Numbers in C# Sep 03, 2024 pm 03:35 PM

Guide to Prime Numbers in C#. Here we discuss the introduction and examples of prime numbers in c# along with code implementation.

Factorial in C# Factorial in C# Sep 03, 2024 pm 03:34 PM

Guide to Factorial in C#. Here we discuss the introduction to factorial in c# along with different examples and code implementation.

See all articles