Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Хотя можно было бы вызывать методы
Parallel.For()Parallel.ForEach()Func<T>Action<T>Обеспечение параллелизма данных с помощью класса Parallel
Первое применение библиотеки TPL связано с обеспечением параллелизма данных. Таким термином обозначается задача прохода по массиву или коллекции в параллельной манере с помощью метода
Parallel.For()Parallel.ForEach()*.jpgЗадача будет решаться с использованием графического пользовательского интерфейса, так что вы увидите, как применять "анонимные делегаты", позволяющие вторичным потокам обновлять первичный поток пользовательского интерфейса.
На заметку! При построении многопоточного приложения с графическим пользовательским интерфейсом вторичные потоки никогда не смогут напрямую обращаться к элементам управления пользовательского интерфейса. Причина в том, что элементы управления (кнопки, текстовые поля, метки, индикаторы хода работ и т.п.) привязаны к потоку, в котором они создавались. В следующем примере иллюстрируется один из способов обеспечения для вторичных потоков возможности получать доступ к элементам пользовательского интерфейса в безопасной к потокам манере. Во время рассмотрения ключевых слов
asyncawaitВ целях иллюстрации создайте приложение Windows Presentation Foundation (WPF) по имени
DataParallelismWithForEachdotnet new wpf -lang c# -n DataParallelismWithForEach -o .DataParallelismWithForEach -f net5.0dotnet sln .Chapter15_AllProjects.sln add .DataParallelismWithForEachНа заметку! Инфраструктура Windows Presentation Foundation (WPF) в текущей версии .NET Core предназначена только для Windows и будет подробно рассматриваться в главах 24-28. Если вы еще не работали с WPF, то здесь описано все, что необходимо для данного примера. Разработка приложений WPF ведется в среде Visual Studio Code, хотя никаких визуальных конструкторов там не предусмотрено. Чтобы получить больший опыт разработки приложений WPF, рекомендуется использовать Visual Studio 2019.
Дважды щелкните на имени файла
MainWindow.xaml<Window x:Class="DataParallelismWithForEach.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:DataParallelismWithForEach" mc:Ignorable="d" Title="Fun with TPL" Height="400" Width="800"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Label Grid.Row="0" Grid.Column="0"> Feel free to type here while the images are processed... </Label> <TextBox Grid.Row="1" Grid.Column="0" Margin="10,10,10,10"/> <Grid Grid.Row="2" Grid.Column="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <Button Name="cmdCancel" Grid.Row="0" Grid.Column="0" Margin="10,10,0,10" Click="cmdCancel_Click"> Cancel </Button> <Button Name="cmdProcess" Grid.Row="0" Grid.Column="2" Margin="0,10,10,10" Click="cmdProcess_Click"> Click to Flip Your Images! </Button> </Grid> </Grid></Window>И снова пока не следует задаваться вопросом о том, что означает приведенная разметка или как она работает; вскоре вам придется посвятить немало времени на исследование WPF. Графический пользовательский интерфейс приложения состоит из многострочной текстовой области
TextBoxButtoncmdProcessПохожие книги на "Язык программирования C#9 и платформа .NET5", Троелсен Эндрю
Троелсен Эндрю читать все книги автора по порядку
Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.