mirror of
https://github.com/Stone-Red-Code/docs-desktop.git
synced 2026-09-04 00:56:03 +02:00
Merge pull request #210 from dotnet/publish-23600
This commit is contained in:
@@ -27,7 +27,7 @@ ms.assetid: 02d8fd00-8d7c-4604-874c-58e40786770b
|
||||
No matter how well architected, however, no [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] framework will ever be able to provide a single-threaded solution for every sort of problem. [!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] comes close, but there are still situations where multiple threads improve [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] responsiveness or application performance. After discussing some background material, this paper explores some of these situations and then concludes with a discussion of some lower-level details.
|
||||
|
||||
> [!NOTE]
|
||||
> This topic discusses threading by using the <xref:System.Windows.Threading.Dispatcher.BeginInvoke%2A> method for asynchronous calls. You can also make asynchronous calls by calling the <xref:System.Windows.Threading.Dispatcher.InvokeAsync%2A> method, which take an <xref:System.Action> or <xref:System.Func%601> as a parameter. The <xref:System.Windows.Threading.Dispatcher.InvokeAsync%2A> method returns a <xref:System.Windows.Threading.DispatcherOperation> or <xref:System.Windows.Threading.DispatcherOperation%601>, which has a <xref:System.Windows.Threading.DispatcherOperation.Task%2A> property. You can use the `await` keyword with either the <xref:System.Windows.Threading.DispatcherOperation> or the associated <xref:System.Threading.Tasks.Task>. If you need to wait synchronously for the <xref:System.Threading.Tasks.Task> that is returned by a <xref:System.Windows.Threading.DispatcherOperation> or <xref:System.Windows.Threading.DispatcherOperation%601>, call the <xref:System.Windows.Threading.TaskExtensions.DispatcherOperationWait%2A> extension method. Calling <xref:System.Threading.Tasks.Task.Wait%2A?displayProperty=nameWithType> will result in a deadlock. For more information about using a <xref:System.Threading.Tasks.Task> to perform asynchronous operations, see Task Parallelism. The <xref:System.Windows.Threading.Dispatcher.Invoke%2A> method also has overloads that take an <xref:System.Action> or <xref:System.Func%601> as a parameter. You can use the <xref:System.Windows.Threading.Dispatcher.Invoke%2A> method to make synchronous calls by passing in a delegate, <xref:System.Action> or <xref:System.Func%601>.
|
||||
> This topic discusses threading by using the <xref:System.Windows.Threading.Dispatcher.BeginInvoke%2A> method for asynchronous calls. You can also make asynchronous calls by calling the <xref:System.Windows.Threading.Dispatcher.InvokeAsync%2A> method, which take an <xref:System.Action> or <xref:System.Func%601> as a parameter. The <xref:System.Windows.Threading.Dispatcher.InvokeAsync%2A> method returns a <xref:System.Windows.Threading.DispatcherOperation> or <xref:System.Windows.Threading.DispatcherOperation%601>, which has a <xref:System.Windows.Threading.DispatcherOperation.Task%2A> property. You can use the `await` keyword with either the <xref:System.Windows.Threading.DispatcherOperation> or the associated <xref:System.Threading.Tasks.Task>. If you need to wait synchronously for the <xref:System.Threading.Tasks.Task> that is returned by a <xref:System.Windows.Threading.DispatcherOperation> or <xref:System.Windows.Threading.DispatcherOperation%601>, call the <xref:System.Windows.Threading.TaskExtensions.DispatcherOperationWait%2A> extension method. Calling <xref:System.Threading.Tasks.Task.Wait%2A?displayProperty=nameWithType> will result in a deadlock. For more information about using a <xref:System.Threading.Tasks.Task> to perform asynchronous operations, see [Task-based asynchronous programming](/dotnet/standard/parallel-programming/task-based-asynchronous-programming). The <xref:System.Windows.Threading.Dispatcher.Invoke%2A> method also has overloads that take an <xref:System.Action> or <xref:System.Func%601> as a parameter. You can use the <xref:System.Windows.Threading.Dispatcher.Invoke%2A> method to make synchronous calls by passing in a delegate, <xref:System.Action> or <xref:System.Func%601>.
|
||||
|
||||
<a name="threading_overview"></a>
|
||||
## Overview and the Dispatcher
|
||||
|
||||
@@ -513,22 +513,29 @@ Styles enable developers and designers to standardize on a particular appearance
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
x:Class="SDKSample.StyleWindow"
|
||||
Title="Styles">
|
||||
<!-- Style that will be applied to all buttons -->
|
||||
<Style TargetType="{x:Type Button}">
|
||||
<Setter Property="Background" Value="Orange" />
|
||||
<Setter Property="BorderBrush" Value="Crimson" />
|
||||
<Setter Property="FontSize" Value="20" />
|
||||
<Setter Property="FontWeight" Value="Bold" />
|
||||
<Setter Property="Margin" Value="5" />
|
||||
</Style>
|
||||
<!-- This button will have the style applied to it -->
|
||||
<Button>Click Me!</Button>
|
||||
|
||||
<Window.Resources>
|
||||
<!-- Style that will be applied to all buttons for this window -->
|
||||
<Style TargetType="{x:Type Button}">
|
||||
<Setter Property="Background" Value="Orange" />
|
||||
<Setter Property="BorderBrush" Value="Crimson" />
|
||||
<Setter Property="FontSize" Value="20" />
|
||||
<Setter Property="FontWeight" Value="Bold" />
|
||||
<Setter Property="Margin" Value="5" />
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<StackPanel>
|
||||
|
||||
<!-- This label will not have the style applied to it -->
|
||||
<Label>Don't Click Me!</Label>
|
||||
<!-- This button will have the style applied to it -->
|
||||
<Button>Click Me!</Button>
|
||||
|
||||
<!-- This button will have the style applied to it -->
|
||||
<Button>Click Me!</Button>
|
||||
<!-- This label will not have the style applied to it -->
|
||||
<Label>Don't Click Me!</Label>
|
||||
|
||||
<!-- This button will have the style applied to it -->
|
||||
<Button>Click Me!</Button>
|
||||
|
||||
</StackPanel>
|
||||
</Window>
|
||||
```
|
||||
|
||||
|
||||
@@ -181,11 +181,11 @@ Copy those entries from the old project file into an `<ItemGroup>` element in th
|
||||
> [!IMPORTANT]
|
||||
> **Visual Basic** projects typically use the folder _My Project_ while C# projects typically use the folder _Properties_ for the default project settings file.
|
||||
|
||||
- Import the configuration for any _resx_ file, such as the _properties/Resources.resx_ file. Notice that the `Include` attribute was changed to `Update` on the `<Compile>` element, and `<SubType>` was removed from `<EmbeddedResource>`:
|
||||
- Import the configuration for any _resx_ file, such as the _properties/Resources.resx_ file. Notice that the `Include` attribute was set to `Update` on the `<Compile>` and `<EmbeddedResource>` element, and `<SubType>` was removed from `<EmbeddedResource>`:
|
||||
|
||||
```xml
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<EmbeddedResource Update="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
|
||||
Reference in New Issue
Block a user