小编Luk*_*vac的帖子

挥发性是一种很好的做法,可以避免C#中的竞争条件?

我想知道在特定情况下是否像这样,我们有bool标志,表明是否有一些服务可用:

    private bool isAvailable;
    private void foo()
    {
        if(isAvailable)
        {
            isAvailable = false;
            DoSomething();
            isAvailable = true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

在多线程环境中将bool字段设置为volatile是否足够,或者使用锁甚至是Monitor更好.

在这种特定情况下,如果此时服务不可用,则不需要等待它再次可用.

.net c# multithreading thread-safety

1
推荐指数
1
解决办法
373
查看次数

WPF 为 TabItem 创建 UserControl

我需要帮助用用户控件替换一些 xaml 代码。我在主窗口中有两个选项卡,我想将第二个选项卡(显示为 Header=WCF)放在用户控件中。这是我的代码:

<Window x:Class="TesterTool.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:gif="http://wpfanimatedgif.codeplex.com"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:helpers="clr-namespace:TesterTool"
    xmlns:da ="clr-namespace:TesterTool.DatabaseAccess"
    xmlns:converters="clr-namespace:TesterTool.Converters"
    xmlns:vm="clr-namespace:TesterTool"
    Title="TestingTool v1.00" Height="350" Width="725"
    Icon="Icon.ico">

<Window.Resources>
    <converters:BoolVisibilityConverter x:Key="BoolVisibilityConverter" />
    <converters:InvertedBoolVisibilityConverter x:Key="InvertedBoolVisibilityConverter"/>
</Window.Resources>

<TabControl>
    <TabItem Header="WPF" Margin="-2,0" Height="22" VerticalAlignment="Bottom">
        <Grid>
            <Grid.Background>
                <ImageBrush ImageSource="image.png"/>
            </Grid.Background>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Image gif:ImageBehavior.AnimatedSource="332.gif"

            Width="152"
            Height="39"
           Margin="10,69,194,37"
           Grid.Row="1"
           Visibility="{Binding IsLoading, Converter={StaticResource BoolVisibilityConverter}}"/>
            <TextBox x:Name="tb1"
             Text ="{Binding BoxSerialNumber}"
             Height="23" Margin="128,26,0,0"
             TextWrapping="Wrap"
             VerticalAlignment="Top"
             HorizontalAlignment="Left" Width="220"
             />
            <TextBox x:Name="tbn2"
             Visibility="{Binding IsViewLogSelected, Converter={StaticResource InvertedBoolVisibilityConverter}}"
             Height="23" Margin="128,73,8,0"
             TextWrapping="Wrap"
             Text="{Binding HardwareID}"
             VerticalAlignment="Top"
             RenderTransformOrigin="0.494,0.478"/> …
Run Code Online (Sandbox Code Playgroud)

c# wpf user-controls

0
推荐指数
1
解决办法
4465
查看次数

标签 统计

c# ×2

.net ×1

multithreading ×1

thread-safety ×1

user-controls ×1

wpf ×1