dir.by  
Программирование, разработка, тестирование
C# (язык программирования)
Потоки в C# (класс Thread)
  Посмотрели 20424 раз(а)       Комментариев 1  
 Последний комментарий: (3 апреля 2024 1:48) Thanks, + читать...       написать комментарий...
 Потоки в C# 
последнее обновление: 28 сентября 2018
При написании программы очень часто используется многопоточность, то есть выполнение нескольких задач одновременно. Каждая задача выполняется в отдельном потоке.
Поток это кусочек кода программы.

Для каких задач используются потоки?
Основная причина, вынуждающая разработчиков создавать вторичные потоки, является необходимость вызова методов, которые требуют определенного времени для завершения.

Например у нас графическое приложение, которое:
• рисует графику (много линий)
• записывает постоянно данные в файл
• посылает запросы к серверу
и все это делает одновременно
Пример Thread
При создании потока в конструкторе указывается функция
Чтобы запустить поток нужно вызвать Start
  C#     Создаем новое C# консольное приложение... и напишем код
using System;

// добавляем библиотеку для потоков
using System.Threading;

namespace ConsoleApplication1
{
     class Program
     {
          static void Main(string[] args)
          {
               // создаем поток и назначаем функцию Algoritm1
               Thread thread1 = new Thread(Algoritm1);
               // запускаем поток
               thread1.Start();

               // создаем поток и назначаем функцию Algoritm2
               Thread thread2 = new Thread(Algoritm2);
               // запускаем поток
               thread2.Start();
          }

          // функция потока
          public static void Algoritm1()
          {
               Console.WriteLine("algorithm1 say: Hello");
               Console.WriteLine("algorithm1 say: I am reading Book");
          }

          // функция потока
          public static void Algoritm2()
          {
               Console.WriteLine("algorithm2 say: Good morning");
               Console.WriteLine("algorithm2 say: I am sweeming");
          }
     }
}
Результат примера
Класс Thread в C#
namespace System.Threading

Версия .NETFramework\v4.6.1\mscorlib.dll

Синтаксис
public sealed class Thread : CriticalFinalizerObject, _Thread
Конструкторы
public Thread(ThreadStart start);
Параметр start это функция которую поток будет выполнять.
Делегат ThreadStart описан так:
public delegate void ThreadStart();
public Thread(ParameterizedThreadStart start);
Параметр start это функция которую поток будет выполнять.
Делегат ParameterizedThreadStart описан так:
public delegate void ParameterizedThreadStart(object obj);
public Thread(ParameterizedThreadStart start, int maxStackSize);
Initializes a new instance of the System.Threading.Thread class, specifying a delegate that allows an object to be passed to the thread when the thread is started and specifying the maximum stack size for the thread. Полное описание ...
public Thread(ThreadStart start, int maxStackSize);
Initializes a new instance of the System.Threading.Thread class, specifying the maximum stack size for the thread. Полное описание ...

Свойства
public ApartmentState ApartmentState { get; set; }
Gets or sets the apartment state of this thread. Полное описание ...
public static Context CurrentContext { get; }
контекст текущего потока
public CultureInfo CurrentCulture { get; set; }
Gets or sets the culture for the current thread. Полное описание ...
public static IPrincipal CurrentPrincipal { get; set; }
Gets or sets the thread's current principal (for role-based security). Полное описание ...
public static Thread CurrentThread { get; }
текущий поток
public CultureInfo CurrentUICulture { get; set; }
Gets or sets the current culture used by the Resource Manager to look up culture-specific resources at run time. Полное описание ...
public ExecutionContext ExecutionContext { get; }
Gets an System.Threading.ExecutionContext object that contains information about the various contexts of the current thread. Полное описание ...
public bool IsAlive { get; }
работает ли поток в текущий момент
public bool IsBackground { get; set; }
является ли поток фоновым
public bool IsThreadPoolThread { get; }
Gets a value indicating whether or not a thread belongs to the managed thread pool. Полное описание ...
public int ManagedThreadId { get; }
Gets a unique identifier for the current managed thread. Полное описание ...
public string Name { get; set; }
имя потока
public ThreadPriority Priority { get; set; }
приоритет потока (значение из ThreadPriority ...)
public ThreadState ThreadState { get; }
состояние потока (значение из ThreadState ...)

Методика
public void Abort();
Уведомляет среду CLR о том, что надо прекратить поток, однако прекращение работы потока происходит не сразу, а только тогда, когда это становится возможно. Для проверки завершенности потока следует опрашивать его свойство ThreadState
public void Abort(object stateInfo);
Raises a System.Threading.ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread while also providing exception information about the thread termination. Calling this method usually terminates the thread. Полное описание ...
public static LocalDataStoreSlot AllocateDataSlot();
Allocates an unnamed data slot on all the threads. For better performance, use fields that are marked with the System.ThreadStaticAttribute attribute instead. Полное описание ...
public static LocalDataStoreSlot AllocateNamedDataSlot(string name);
Allocates a named data slot on all threads. For better performance, use fields that are marked with the System.ThreadStaticAttribute attribute instead. Полное описание ...
public static void BeginCriticalRegion();
Notifies a host that execution is about to enter a region of code in which the effects of a thread abort or unhandled exception might jeopardize other tasks in the application domain.
public static void BeginThreadAffinity();
Notifies a host that managed code is about to execute instructions that depend on the identity of the current physical operating system thread. Полное описание ...
public void DisableComObjectEagerCleanup();
Turns off automatic cleanup of runtime callable wrappers (RCW) for the current thread.
public static void EndCriticalRegion();
Notifies a host that execution is about to enter a region of code in which the effects of a thread abort or unhandled exception are limited to the current task.
public static void EndThreadAffinity();
Notifies a host that managed code has finished executing instructions that depend on the identity of the current physical operating system thread. Полное описание ...
public static void FreeNamedDataSlot(string name);
Eliminates the association between a name and a slot, for all threads in the process. For better performance, use fields that are marked with the System.ThreadStaticAttribute attribute instead. Полное описание ...
public ApartmentState GetApartmentState();
Returns an System.Threading.ApartmentState value indicating the apartment state. Полное описание ...
public CompressedStack GetCompressedStack();
Returns a System.Threading.CompressedStack object that can be used to capture the stack for the current thread. Полное описание ...
public static object GetData(LocalDataStoreSlot slot);
Retrieves the value from the specified slot on the current thread, within the current thread's current domain. For better performance, use fields that are marked with the System.ThreadStaticAttribute attribute instead. Полное описание ...
public static AppDomain GetDomain();
Возвращает домен приложения AppDomain...
public static int GetDomainID();
Возвращает id домена приложения, в котором выполняется текущий поток
public override int GetHashCode();
Returns a hash code for the current thread. Полное описание ...
public static LocalDataStoreSlot GetNamedDataSlot(string name);
Looks up a named data slot. For better performance, use fields that are marked with the System.ThreadStaticAttribute attribute instead. Полное описание ...
public void Interrupt();
Прерывает поток на некоторое время
public void Join();
Блокирует выполнение вызвавшего его потока до тех пор, пока не завершится поток, для которого был вызван данный метод.
public bool Join(int millisecondsTimeout);
Блокирует выполнение вызвавшего его потока до тех пор, пока не завершится поток, для которого был вызван данный метод или пройдет время в миллисекундах.
public bool Join(TimeSpan timeout);
Блокирует выполнение вызвавшего его потока до тех пор, пока не завершится поток, для которого был вызван данный метод или пройдет время.
public static void MemoryBarrier();
Synchronizes memory access as follows: The processor executing the current thread cannot reorder instructions in such a way that memory accesses prior to the call to System.Threading.Thread.MemoryBarrier() execute after memory accesses that follow the call to System.Threading.Thread.MemoryBarrier().
public static void ResetAbort();
Cancels an System.Threading.Thread.Abort(System.Object) requested for the current thread. Полное описание ...
public void Resume();
Resumes a thread that has been suspended. Полное описание ...
public void SetApartmentState(ApartmentState state);
Sets the apartment state of a thread before it is started. Полное описание ...
public void SetCompressedStack(CompressedStack stack);
Applies a captured System.Threading.CompressedStack to the current thread. Полное описание ...
public static void SetData(LocalDataStoreSlot slot, object data);
Sets the data in the specified slot on the currently running thread, for that thread's current domain. For better performance, use fields marked with the System.ThreadStaticAttribute attribute instead. Полное описание ...
public static void Sleep(int millisecondsTimeout);
останавливает поток на заданное количество миллисекунд
public static void Sleep(TimeSpan timeout);
останавливает поток на заданное количество времени
public static void SpinWait(int iterations);
Causes a thread to wait the number of times defined by the iterations parameter. Полное описание ...
public void Start();
Запускает поток.
public void Start(object parameter);
Causes the operating system to change the state of the current instance to System.Threading.ThreadState.Running, and optionally supplies an object containing data to be used by the method the thread executes. Полное описание ...
public void Suspend();
Either suspends the thread, or if the thread is already suspended, has no effect. Полное описание ...
public bool TrySetApartmentState(ApartmentState state);
Sets the apartment state of a thread before it is started. Полное описание ...
public static byte VolatileRead(ref byte address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static double VolatileRead(ref double address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static float VolatileRead(ref float address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static int VolatileRead(ref int address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static IntPtr VolatileRead(ref IntPtr address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static long VolatileRead(ref long address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static object VolatileRead(ref object address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static sbyte VolatileRead(ref sbyte address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static short VolatileRead(ref short address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static uint VolatileRead(ref uint address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static UIntPtr VolatileRead(ref UIntPtr address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static ulong VolatileRead(ref ulong address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static ushort VolatileRead(ref ushort address);
Reads the value of a field. The value is the latest written by any processor in a computer, regardless of the number of processors or the state of processor cache. Полное описание ...
public static void VolatileWrite(ref byte address, byte value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref double address, double value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref float address, float value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref int address, int value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref IntPtr address, IntPtr value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref long address, long value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref object address, object value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref sbyte address, sbyte value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref short address, short value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref uint address, uint value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref UIntPtr address, UIntPtr value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref ulong address, ulong value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static void VolatileWrite(ref ushort address, ushort value);
Writes a value to a field immediately, so that the value is visible to all processors in the computer. Полное описание ...
public static bool Yield();
Causes the calling thread to yield execution to another thread that is ready to run on the current processor. The operating system selects the thread to yield to. Полное описание ...
 
← Предыдущая тема
Модули процесса в С# (класс ProcessModule)
 
Следующая тема →
Пул потоков в C# (Thread Pool)
 
Ваши Отзывы ... 1 комментариев
Fedar
3 апреля 2024 1:48
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

Экскурсии по Москве Экскурсии по Москве: пешеходные, автобусные и речные прогулки на любой вкус
  Объявления  
  Объявления  
 
Загрузка и установка Microsoft Visual Studio
Скачать и установить Visual Studio 2022 (для изучения C#, написание программ: WPF, ASP.NET, ASP.NET Core, UWP, Miaui, Xamarin, Unity, MonoGame)
Скачать и установить Visual Studio 2019 (для изучения C#, написание программ: WPF, ASP.NET, ASP.NET Core, Xamarin, Unity, MonoGame)
Загрузка и установка Visual Studio 2017 (для изучения C#, написание программ: WPF, ASP.NET, ASP.NET Core, Xamarin, Unity, MonoGame)
Новое приложение для изучения C#
Создаем новое консольное приложение для изучения C#
Отладка кода
Debug.Assert(false) Отладка кода в C#
Для отладки, опция "Common Language Runtime Exceptions" увидеть исключения, когда выполняется программа C#
Атрибут [Obsolete("Мой метод устарел. Не используйте", false)] Предупреждение при компиляции кода в C#
Типы данных C#
C# типы данных: число (bool, char, byte, int, long, float, double, decimal), текст (string), перечисление (enum), класс (class), структура (struct)
Структура Boolean В C# это флаг со значениями true или false (bool) и методы для конвертации bool
Структура Int32 В C# это целое число со знаком (int) и методы для конвертации int
Структура Single В C# это число с плавающей запятой (float) и методы для конвертации float
var ... Переменная любого типа В C#. Пример: var str = "Hello!";
Тип dynamic В C#
Значения по умолчанию В C#
Хранение объектов в памяти. Удаление объектов из памяти
Ссылочные типы и типы значений В C#
Стэк (stack) - память для параметров метода и локальных переменных В C#
Heap - динамическая память доступная во время выполнения программы В C#
Интерфейс IDisposable. Пишем код для правильного освобождения неуправляемых ресурсов в деструкторе и в интерфейсе IDisposable В C#
Память. Сборщик мусора (garbage collector). Автоматическое освобождение памяти В C#
C# конвертация типов
C# конвертация строки в число (string → short, int, long, ushort, uint, ulong, float, double, decimal) | используем Culture (настройки системы)
C# конвертация числа в строку (int, double, short, ... → string) с требуемой точностью
Текст в C# (тип string и класс String)
Алгоритм пересечения прямоугольников
Что такое текст В C# ? Тип string и класс String. Методы для работы с текстом.
Length (длина строки в C#). Пример: string str1 = "Hello"; int v1 = str1.Length;
CompareTo (сравнивает текст с учетом регистра в C#). Пример: bool bIsSame = str1.CompareTo(str2)==0;
ToLower (конвертирует текст в нижний регистр в C#). Пример: string str1 = "HELLO World!"; string str2 = str1.ToLower();
ToUpper (конвертирует текст в верхний регистр в C#). Пример: string str1 = "Hello World!"; string str2 = str1.ToUpper();
Split (разбить строку на слова в C#). Пример: string[] arrWords = strText.Split(' ');
StartsWith (проверяет начало текста с указанным текстом с учетом регистра в C#). Пример: bool bStart = str1.StartsWith(str2);
Contains (проверяет содержит текст указанный текст или нет с учетом регистра в C#). Пример: bool bFound = str1.Contains(str2);
IndexOf (ищет строку с учетом регистра и возвращает позицию в C#). Пример: int pos = str1.IndexOf(str2);
Substring (возвращает часть текста с указанной позиции и длиной В C#). Пример: string str1 = "Hello World!"; string str2 = str1.Substring(2, 5);
IsNullOrEmpty (проверяет текст на пустой или на null В C#). Пример: string name = "Hello World!"; bool bFlag = String.IsNullOrEmpty(name);
IsNullOrWhiteSpace (проверяет текст на null или на текст с пробелами В C#). Пример: string name = "   "; bool bFlag = String.IsNullOrWhiteSpace(name);
[] (возвращает символ с указанной позиции В C#). Пример: char symbol = str[1];
Format (форматирование текста, строки В C#). Пример: string strNew = String.Format("Hello {0}, {1}", name, year);
+ (добавление строк и текста В C#). Пример: string str = str1 + str2 + " people!";
$ (интерполяция строк В C#). Пример: string result = $"Hello {a} + {b} = {a + b}";
Символ @ перед началом строки В C#. Пример: string str1 = @"aaa";
Используем вместе @ и $ (интерполяцию строк в C#)
DateTime (дата и время) в C#
Что такое DateTime в C# ? Конвертация в строку с форматом
Перечисления в C# (enum)
Что такое перечисление (enum) В C# ?
Как преобразовать текст в enum в C#
Как перечислить все элементы в enum в C#
null
null значение для простых типов. Используем ? или Nullable В C#
Оператор ?? (null-объединение) В C#
try-catch
Обработка исключений в C#. Оператор try catch finally
Классы в C# (class)
Что такое класс В C#?
Модификаторы доступа класса В C#. Модификаторы доступа для методов, свойств, полей В C#
'partial class' В C#. Описание класса в разных файлах
Конструкторы для класса
Конструктор класса В C#
Инициализация объекта класса (установка значений для полей) В C#
Вызов конструктора у базового класса В C#
Статический конструктор в классе C#
'base' Для вызова метода из базового класса. Для вызова переменной из базового класса. Для вызова конструктора из базового класса. C#
'this' Для установки или получения значения у поля класса. Для вызова конструктора из класса. C#
Деструкторы для класса
Деструктор класса В C#
Деструкторы в классах (как вызываются базовые деструкторы) C#
Наследование
Что такое наследование класса в C# ?
Наследование с использованием new
Используем new для метода интерфейса. Наследование интерфейса от интерфейса с одинаковым методом
Используем new для метода класса. Наследование класса от класса в C#.
Наследование с использованием sealed
sealed class. Запрет наследоваться В C#
Наследование класса от класса в C#. Используем слова virtual, override, sealed для методов класса
Абстрактный класс
Что такое абстрактный класс В C# ? Абстрактные методы, свойства, индексы.
Наследование от класса abstract В C#. Используем abstract и override для методов класса
Константы и readonly поля в классе
Константы в классе C#
readonly . Для поля класса. Это поле только для чтения в C#
Свойства get и set в классе C# (аксессоры)
get set Свойства в классе C#
Наследование (virtual, override) для аксессоров get и set в C#
Операторы, индексаторы в C#
Операторы в классе C#. Перегрузка операторов: > < ++ + true false
Индексаторы в классе C#
Вложенные типы в C#
Вложенный класс, структура в C#
Параметры в методе класса C#
ref и out (возврат параметров по ссылке в методе) C#. Пример: public void AddValue(ref int value)
Параметры по умолчанию (необязательные параметры) в методе C#. Пример: public int CalculateSum(int a, int b, int c=7)
Именованные параметры C#. Пример: public void CalculateSum(a:7, b:3);
Универсальные методы, универсальные классы в C# (шаблоны)
Метод с универсальными параметрами в C# (шаблоны). Пример: public double Sum<T1, T2>(T1 value1, T2 value2) { ... }
Обобщенный (типизированный) класс в C# (шаблоны). Пример class Book<T> { ... }
where Ограничение типа в обобщенном (типизированном) классе в C# (шаблоны). Пример class Dog<T> where T : Cat
Преобразование объекта класса из одного типа в другой
explicit это явный оператор преобразования в классе C#
implicit это неявный оператор преобразования в классе C#
Преобразование объекта класса из одного типа в другой в C#. Используем try ( ) is as
Преобразование объекта класса из одного типа в другой в C#. Используем pattern matching is switch
Объект класса в C#
? оператор условного null в C#
Объект класса содержит ссылку в C#
Как чтобы при копировании объектов в C# копировались данные класса, а не ссылка?
Статический конструктор и статические свойства и методы
Статический конструктор в классе C#
Статические методы, свойства, члены в классе C#
Дополнительные возможности класса в C#
Метод расширения в C# (this в первом параметре метода). Пример: static public void AddValues(this List<int> myList, int value1, int value2)
Правила именования классов в C#
Какими буквами строчными или заглавными называть классы, методы, свойства ... в C#
Правильно ли для каждого класса в C# создавать свой .cs файл? Или писать классы C# в одном .cs файле?
Статический класс
Статический класс в C#
Анонимный класс
Объект с анонимным (отсутствующим) типом в C#. Пример: var book = new { BookName = "Властелин Колец", Price = 100 };
Интерфейсы
Что такое interface в C# ?
Наследование interface от interface в C#
Наследование класса от класса от interface в C#. Используем override и virtual для методов класса
Обобщенный (типизированный) интерфейс в C# (шаблоны). Пример interface IUser<T> { ... }
Структура struct
Что такое структура в C#?
Модификаторы доступа структуры в C#. Модификаторы доступа для методов, свойств, полей структуры в C#
Инициализация объекта структуры (установка значений для полей) в C#
Как поменять значение в массиве структур или в коллекции структур (List) в C#
Вложенная структура в C#
Преобразование объекта структуры из одного типа в другой
implicit это неявный оператор преобразования структуры в C#
explicit это явный оператор преобразования структуры в C#
Отложенная загрузка class Lazy в C#
Отложенное создание объекта в памяти (class Lazy в C#)
Кортежи (tuple)
Кортежи (tuple) в C#
Динамические объекты с любыми свойствами
DynamicObject и ExpandoObject в C#
Массивы
Что такое массивы? array в C#
Инициализация массива (заполнение элементов массива array) в C#
params передача любого количества параметров в метод в C#
Класс Array (для работы с массивом) C#
Коллекции
Что такое коллекции в C# ?
Что такое необобщенные коллекции в C# ? Классы ArrayList, Stack, Queue, Hashtable, SortedList, BitArray
Что такое обобщенные (типизированные) коллекции в C# ? Классы List<T>, SortedList<T>, Stack<T>, Dictionary<TKey,TValue>, LinkedList<T>, Queue<T>, HashSet<T>, SortedSet<T>, ConcurrentDictionary<TKey, TValue>, SortedDictionary<TKey, TValue>
Классы необобщенных коллекций (в одной коллекции хранятся элементы разного типа)
Интерфейс IEnumerable. Самый базовый интерфейс для коллекций в C#
Интерфейсы: ICollection, IList, IDictionary. Основа для коллекций в C#
Класс ArrayList (коллекция в C#)
Что такое ArrayList в C# ?
Класс SortedList (коллекция в C#)
Что такое SortedList в C# ?
Класс Stack (коллекция в C#)
Что такое Stack в C# ?
Класс Queue (коллекция в C#)
Что такое Queue в C# ?
Класс Hashtable (коллекция в C#)
Что такое Hashtable в C# ?
Класс BitArray (коллекция в C#)
Что такое BitArray в C# ?
Классы обобщенных, типизированных коллекций в C# (в одной коллекции хранятся элементы одного типа)
Интерфейс IEnumerable<T>. Самый базовый интерфейс для типизированных коллекций в C#
Интерфейсы: ICollection<T>, IList<T>, ISet<T>, IDictionary<TKey, TValue>. Основа для типизированных коллекций в C#
Класс List<T> (типизированная коллекция в C#)
Что такое List<T> в C# ?
Инициализация коллекции List в фигурных скобках В C#
for, foreach (проходим все элементы в List<T>) в C#
Find (ищем элемент по критерию в List<T>) в C#
FindAll (ищем список элементов по критерию в List<T>) в C#
ForEach (для каждого элемента List<T> выполняется действие) в C#
Класс LinkedList<T> (типизированная коллекция в C#)
Что такое LinkedList<T> в C# ?
Класс SortedList<TKey, TValue> (типизированная коллекция в C#)
Что такое SortedList<TKey, TValue> в C# ?
Класс Stack<T> (типизированная коллекция в C#)
Что такое Stack<T> в C# ?
Класс Queue<T> (типизированная коллекция в C#)
Что такое Queue<T> в C# ?
Класс HashSet<T> (типизированная коллекция в C#)
Что такое HashSet<T> в C# ?
Как устроен HashSet<T> в C#
Класс SortedSet<T> (типизированная коллекция в C#)
Что такое SortedSet<T> в C# ?
Класс ObservableCollection<T> (типизированная коллекция в C#)
Что такое ObservableCollection<T> в C# ?
Класс Dictionary<TKey, TValue> (типизированная коллекция в C#)
Что такое Dictionary<TKey, TValue> в C# ?
Инициализация элементов в конструкторе Dictionary<TKey, TValue> в C#
Как устроен Dictionary<TKey, TValue> в C#
Как в C# сконвертировать IEnumerable в → Dictionary<TKey, TValue> . Используем метод ToDictionary
Класс SortedDictionary<TKey, TValue> (типизированная коллекция в C#)
Что такое SortedDictionary<TKey, TValue> в C# ?
Класс ConcurrentDictionary<TKey, TValue> (типизированная коллекция в C#)
Что такое ConcurrentDictionary<TKey, TValue> в C# ?
AddOrUpdate (добавить или обновить значение по ключу в ConcurrentDictionary<TKey, TValue>) в C#
Асимптотическая сложность для добавления, удаления, взятия элемента в коллекциях
Асимптотическая сложность для добавления, удаления, взятия элемента в коллекциях C# (List, SortedList, Stack, Dictionary, LinkedList, Queue, HashSet, SortedSet, ConcurrentDictionary, SortedDictionary)
Сортировка элементов в массиве [] и коллекции List
Сортировка элементов в массиве [] и коллекции List<T> в C#. Интерфейс IComparable
Сортировка элементов в массиве [] и коллекции List<T> в C#. Интерфейс IComparer
Моя реализация IEnumerator, IEnumerable и итераторы
Пример: Моя реализация интерфейсов IEnumerable и IEnumerator в C#
Итераторы и yield в C#. Примеры реализации IEnumerable с помощью yield
Методы расширения для IEnumerable (поиск, замена, выборка значений) в C#
Методы поиска, замены, выборки значений в IEnumerable<T>. Методы расширений для IEnumerable<T> в C#
Any (метод расширения IEnumerable<T>) в C#
Select (метод расширения IEnumerable<T>) в C#
GroupBy (метод расширения IEnumerable<T>) В C#
GroupJoin (метод расширения IEnumerable<T>) В C#
Сортировка, фильтрация в LINQ (Language-Integrated Query)
Что такое LINQ в C# ?
Сортировка, фильтрация элементов списка с помощью LINQ в C#
Книги для изучения LINQ в C#
Указатели
Указатели в C#. Оператор unsafe
Указатели на структуры, поля классов, массивы в C# . Операторы unsafe, stackalloc, fixed
Работа с файлами
Открываем файл, читаем текст из файла и разбиваем по словам. C#
Создаем текстовый файл, пишем текст в файл C#
Создаем HTML файл, пишем табличные данные в HTML файл | C#
Создаем бинарный файл, пишем байты в файл C#
Частичная загрузка файла с FTP в C#
Класс Path. Метод Combine - объединяет строки в полный путь файла. И другие методы класса Path | C#
Сериализация
Что такое сериализация объекта в C# ? Атрибут [Serializable]
Сериализация C# объекта в бинарный файл. Класс BinaryFormatter. Атрибут [Serializable]
Сериализация C# объекта в XML файл. Класс XmlSerializer. Атрибут [Serializable]
Сериализация C# объекта в JSON файл. Класс DataContractJsonSerializer. Атрибут [Serializable]
Сериализация C# объекта в SOAP файл. Класс SoapFormatter. Атрибут [Serializable]
Пространства имен
Пространства имен namespace using в C#
Delegate
Делегат (delegate) в C#
Добавление метода(методов) в делегате C#. Объединение делегатов. Удаление метода из делегата
Делегат как параметр в методе C#
Безымянный, анонимный метод в C# (метод описанный на месте параметра, делегата)
Универсальные делегаты
Универсальные, обобщенные делегаты в C# (шаблоны)
Универсальные делегаты Action, Predicate и Func в C#
События
События (event) в C#
Лямда
Лямда (пример) в C#
Регулярные выражения
Регулярные выражения в C#
Разбиваем текст на слова (регулярные выражения в c#)
Ставим * вместо фамилии после первой буквы (регулярные выражения в c#)
Разбиваем текст на слова (регулярные выражения в c#)
Процесс, модули процесса
Процесс в C# (класс Process)
Модули процесса в С# (класс ProcessModule)
Потоки, многопоточность
Потоки в C# (класс Thread)
Пул потоков в C# (Thread Pool)
В чем отличие background (фоновый поток) и foreground (на переднем плане поток) в C# ?
Синхронизация потоков в C#
Parallel Library Task (TPL) Параллельное программирование задач
Parallel Library Task (TPL). Библиотека параллельных задач в C#
Класс Parallel используя метод Invoke параллельно выполненяет методы, циклов for и foreach (на разных ядрах процессора) в C#
PLINQ распараллеливает LINQ запросы для выполнения на разных ядрах процессора в C#
Асинхронные методы (async и await)
class Task в C#
Асинхронное программирование в C# (async, await как оформлять)
Асинхронное программирование в C# (используем async, await и Task на примере)
Асинхронное программирование в C# (теория)
Домены приложений
Что такое Домены приложений в C# ? (класс AppDomain)
Пример "Информация о домене приложения" (имя текущего домена, перечисляем сборки) в C#
Пример "Создаем 2-ой домен приложения. Пишем класс в 1-ом домене и используем во 2-ом домене. MarshalByRefObject в C#
Пример "Загружаем 2-ой домен приложения из файла, запускаем вычисления, выгружаем 2-ой домен из памяти" в C#
Атрибуты
Атрибуты для класса, метода, свойства в C#
Атрибут [Conditional("AAA")] . Для компиляции игнорировать метод или свойство если не определен символ условной компиляции в C#
Атрибут [Obsolete("Мой метод устарел. Не используйте", false)] Предупреждение при компиляции кода в C#
Атрибут [Display(Name = "Sleep at night")] . Для хранения какого нибудь текста прикрепленного к переменной | C#
Аттрибут [Required(ErrorMessage = "Пожалуйста, введите название")] описывается для свойства в C# классе и требует чтобы свойство было заполнено, если не заполнено на экране ошибка ErrorMessage в ASP.NET MVC
Аттрибут [Remote("IsValidAuthor", "Home", ErrorMessage = "Enter correct author of book")] описывается для свойства в C# классе и проверяет это свойство на правильность на сервере через метод IsValidAuthor в conroller Home, если метод возвращает false, то на экране будет ошибка ErrorMessage в ASP.NET MVC
Рефлексия (отражение) reflection в C#
Оператор nameof в C# (имя класса, имя метода, имя переменной)
Что такое рефлексия (отражение) в C# ? Класс Type
Создание объекта класса и вызов конструтора с параметрами используя рефлексию (отражение) reflection в C#
Как получить информацию атрибута для метода у класса. Используем reflection (отражение)
Как получить информацию атрибута для свойства у класса. Используем reflection (отражение)
Директивы препроцессора (if при компиляции)
Директивы препроцессора #define #undef #if #elif #else #endif в C#
Как определить #define для всех файлов (для всего проекта) в С# ?
Что такое сборка и исполняющая среда CLR ?
Сборка (Assembly) в C#. Компиляция. Промежуточный код IL (Intermediate Language). Метаданные.
Как подключить C# сборку в проект?
Утилита ildasm.exe. Конвертирует сборку (C# exe, dll файл) в промежуточный язык IL (Intermediate Language). Эта утилита удобна для изучения
Исполняющая среда CLR (Common Language Runtime) в C# . JIT (Just-In-Time) компилятор.
Создание и подключение нашей сборки
Создание нашей C# сборки (обычная сборка)
Подключение нашей C# сборки (обычная сборка)
Создание нашей C# сборки (разделяемая сборка)
Подключение нашей C# сборки (разделяемая сборка)
База данных в консольном приложении C#
Entity Framework в консольном приложении C#. Используем Code First (пишем c# код, а таблицы в базе данных создаются сами)
Читаем картинку из базы данных и сохраняем в файл | ADO.NET, C#, консольное приложение
Внедрение зависимостей (Dependency Injection) DI в C#
Dependency Injection (DI) Внедрение зависимостей в C#
Ninject (IoC-контейнер) управление зависимостями в C#
Autofac (IoC-контейнер) управление зависимостями в C#
Удобные утилиты Visual Studio
Графическая диаграмма классов в C# (View Class Diagram)
exe to C# code
"dotPeek" application for decompile (disassemble) exe to c# source code
В приложении C# вызываем C++ функции
Что такое управляемый код (managed code) и неуправляемый код (unmanaged code) ? | C# и C++
Маршалинг (marshalling) в C#. Преобразование типов между управляемым кодом (managed code) и неуправляемым кодом (unmanaged code)
В приложении C# вызываем функции из Windows dll (C++ WinAPI). Атрибут [DllImport("user32.dll")]
В приложении C# вызываем функции из моей dll (C++). Атрибут [DllImport("My.dll", CallingConvention = CallingConvention.Cdecl)]
Дополнительные темы, вопросы
Не создается новый проект в Visual Studio 2019. Ошибка "Object reference not set to instance of an object"
Ошибка компиляции C#: error CS1106: Extension method must be defined in a non-generic static class
Ошибка компиляции C#: error CS0246: The type or namespace name 'Point' could not be found (are you missing a using directive or an assembly reference?)
Почему метод Dictionary.TryGetValue не может найти значение по ключу в C# ?
Объектно-ориентированное программирование (ООП). Принципы ООП: абстрагирование, инкапсуляция, наследование, полиморфизм
Какими буквами в C# (заглавными или строчными или прописными) называть поля, методы в классе, интерфейсы, делегаты, параметры ?
Правильно ли для каждого класса в C# создавать свой .cs файл? Или писать классы C# в одном .cs файле?
Что лучше использовать встроенный тип int или класс Integer (тип string или класс String) на C#?
Как скачать и установить нужную .NET Framework версию в Visual Studio ?
Упаковка и распаковка значимых типов в C# (boxing/unboxing)
Error CS8107 Feature 'default literal' is not available in C# 7.0. Please use language version 7.1 or greater
Error "unable to connect to web server "iis express" | C# | Visual Studio 2017
Удаляем и устанавливаем NuGet в Visual Studio
При открытии проекта в Visual Studio 2019 ошибка: "project requires 'SQL Server 2012 Express LocalDB' which is not installed on this computer"
Математические операторы checked и unchecked
Математический оператор unchecked в C#
Математический оператор checked в C#
Дополнительный C# классы
C# класс Random
C# структура Point
C# структура PointF
C# структура Size
C# структура SizeF
C# структура Rectangle
C# структура RectangleF
Время
Время, истекшее с момента загрузки системы (в миллисекундах). System.Environment.TickCount в C#
Шифрование / Cryptography
Зашифруем пароль и проверим | C# console application
Excell
Чтение excel файла на C# (сonsole application)
WWW сайты для изучения C#
Сайты для изучения C#

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика