小编Kay*_*Zed的帖子

没有互斥的事件通知

C++ 11有std :: condition_variable,它的等待函数是

template< class Predicate >
void wait( std::unique_lock<std::mutex>& lock, Predicate pred );
Run Code Online (Sandbox Code Playgroud)

它需要一个互斥量.

据我所知 - 它的notify_one可以在没有同步的情况下调用(我知道惯用的方法是将它与互斥锁一起使用).

我有一个对象,其已经在内部同步 -所以我并不需要一个互斥量来保护它.一个线程应该等待与该对象关联的某个事件,并且其他线程将被通知.

如何在C++ 11中没有互斥的情况下进行此类通知?即使用condition_variable很容易,但它需要一个互斥量.我想过使用假的互斥锁类型,但是在等待界面中固定了std :: mutex.

一个选项是轮询std :: atomic_flag + sleep,但我不喜欢睡觉.

c++ events multithreading condition-variable c++11

15
推荐指数
2
解决办法
5502
查看次数

13
推荐指数
2
解决办法
1万
查看次数

用于子控件的UserControl属性触发器

根据我的UserControl的IsEnabled属性(true/false),我希望其中的控件具有不同的颜色.我希望用XAML的"魔力"来做到这一点.

<UserControl.Resources>
    <Style x:Key="EnableDependent" TargetType="{x:Type Shape}">
        <Style.Triggers>
            <Trigger Property="{Binding Path=IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="True">
                <Setter Property="Stroke" Value="White" />
            </Trigger>
            <Trigger Property="{Binding Path=IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="False">
                <Setter Property="Stroke" Value="Black" />
            </Trigger>
        </Style.Triggers>
    </Style>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)

该样式应用于绘制路径的ViewBox中:

    <Viewbox  Grid.Column="3" Width="18" Margin="5,5,2,5" MouseEnter="Dispatch_MouseEnter" DockPanel.Dock="Right" Stretch="Uniform">
        <Path Data="M0,1 L4,1 M2,0 L4,1 L2,2" Stretch="Fill" StrokeThickness="3" Width="12" Height="12" Style="{StaticResource EnableDependent}" />
    </Viewbox>
Run Code Online (Sandbox Code Playgroud)

我得到一个运行时异常,即无法在触发器的"Property"属性中设置绑定.

那么这样做的方法是什么?

wpf xaml

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

所有者绘制文本框以在 WinForms 中使用

I need a lean & mean TextBox solution. A RichTextBox proves too slow, so I want to go the way of owner drawing, or custom control building.

My need is for a textbox that can handle large text content and offers simple highlighting by drawing colored backgrounds around words or single characters. Important is, that the text string itself does NOT contain markup for this, but rather, the indices of words to mark are stored separately. Indices relative to the …

.net windows controls textbox winforms

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