小编MrE*_*een的帖子

用在别处创建的对象填充 std::vector

我正在尝试std::vector使用在函数中创建的对象填充 a ,如下所示:

class Foo
{
public:
   Foo() { std::cout << "Foo created!\n"; }
   Foo(const Foo& other) { std::cout << "Foo copied!\n"; }
   Foo(Foo&& other) { std::cout << "Foo moved\n"; }
   ~Foo() { std::cout << "Foo destroyed\n"; }
};

static Foo createFoo() 
{
   return Foo();
}

int main()
{
   {
       std::vector<Foo> fooVector;
       fooVector.reserve(2);
       fooVector.push_back(createFoo());
       fooVector.push_back(createFoo());
       std::cout << "reaching end of scope\n";
   }
   std::cin.get();
}
Run Code Online (Sandbox Code Playgroud)

输出:

Foo created!
Foo moved
Foo destroyed
Foo created!
Foo moved
Foo destroyed
reaching …
Run Code Online (Sandbox Code Playgroud)

c++ vector move-semantics

12
推荐指数
2
解决办法
342
查看次数

如果失败则重新启动任务

如果失败,我正在尝试重新启动多个任务之一。我使用.ContinueWith(t => { HandleException(t); }, TaskContinuationOptions.OnlyOnFaulted);HandleException(t)方法应该在现有任务数组中找到任务并在其位置创建一个新任务的位置。只有传递给我的HandleException(t)方法的任务与原始任务不同,所以我无法在我的现​​有任务中找到它。此外,在处理异常时,excisting 任务仍在运行。

例子:

using System;
using System.Threading.Tasks;
using System.Threading;

static Task[] tasks;
static void Main(string[] args)
{
    tasks = new Task[2];
    for (int i = 0; i < tasks.Count(); i++)
    {
        tasks[i] = Task.Run(() => { Thread.Sleep(1000); throw new Exception("BOOM"); })
             .ContinueWith(t => { HandleException(t); }
             , TaskContinuationOptions.OnlyOnFaulted);

        Console.WriteLine(String.Format("Task {0} started", tasks[i].Id));
    }

    Console.ReadLine();
}

static void HandleException(Task task)
{
    Console.WriteLine(String.Format("Task {0} stopped", task.Id));

    // Check task status
    for …
Run Code Online (Sandbox Code Playgroud)

c# continuations task

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

第一次触摸按钮不触发 WPF 中的命令(使用 Prism 对话框)

我正在尝试制作一个简单的键盘,用于在触摸显示器上输入密码。第一次触摸按钮时会突出显示该按钮,但不会触发Command. 第一次按下后,所有按钮均正常工作。当我用鼠标单击按钮时,即使是第一次单击,它们也能正常工作。

首次按下未注册

我认为这与焦点有关,我已经Focusable="False"在 中进行了设置Style,但第一次触摸仍然会聚焦按钮。我想完全禁用焦点并且不突出显示按钮。

我的 XAML 代码:

<UserControl x:Class="TestShell.Dialogs.ExitApplicationDialog"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:TestShell.Dialogs"
             xmlns:prism="http://prismlibrary.com/"
             mc:Ignorable="d" 
             Background="White"
             BorderThickness="2"
             d:DesignHeight="400" d:DesignWidth="300">

    <UserControl.Resources>
        <Style x:Key="TouchButton" TargetType="{x:Type Button}">
            <Setter Property="IsTabStop" Value="false"/>
            <Setter Property="Focusable" Value="false"/>
            <Setter Property="ClickMode" Value="Press"/>
            <Setter Property="Margin" Value="3"/>
            <Setter Property="FontSize" Value="48"/>
        </Style>
    </UserControl.Resources>

    <prism:Dialog.WindowStyle>
        <Style TargetType="Window">
            <Setter Property="Height" Value="400" />
            <Setter Property="Width" Value="300"/>
            <Setter Property="ResizeMode" Value="NoResize" />
            <Setter Property="prism:Dialog.WindowStartupLocation" Value="CenterScreen" />
            <Setter Property="WindowStyle" Value="None"/>
            <Setter Property="BorderBrush" Value="Black"/>
            <Setter Property="BorderThickness" Value="2"/>
        </Style>
    </prism:Dialog.WindowStyle>
    
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition …
Run Code Online (Sandbox Code Playgroud)

wpf prism touch

5
推荐指数
0
解决办法
468
查看次数

ASP.NET Core SignalR 从任何地方访问 Hub 方法

如果在这个问题上花了很多时间,我发现了很多不同的策略,但没有一个对我有用。(此代码只是概念的证明。)

我使用 Asp.net core 2.1(在 .Net Framwork 4.7.2 上)进行了以下设置:

我制作了一个信号集线器,它有一种发送数字的方法:

using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;


namespace TestRandomNumberSignalR
{
    public class TestHub : Hub
    {
        public async Task SendRandomNumber(int number)
        {
            await Clients.All.SendAsync("ReceiveRandomBumber", number);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我还创建了一个每 3 秒更新一个随机数并将其添加为单例的类:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace TestRandomNumberSignalR
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection asp.net-core asp.net-core-signalr

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