小编Cod*_*gry的帖子

将const_cast元素移出std :: initializer_list会有任何风险吗?

这个问题建立在这个@ FredOverflow的问题上.

澄清:initializer_list需要方法,因为VC++ 2012有一个错误,阻止了命名空间参数的转发扩展._MSC_VER <= 1700有错误.

我编写了一个可变参数模板函数,它可以折叠类型化容器中的任意数量的参数.我使用类型的构造函数将可变参数转换为可使用的值.例如_variant_t:)

MySql在一次打击MySqlVariant中将参数推送到预准备语句时,我需要这个用于我的C++库,而我将输入数据转换为MYSQL_BINDs.因为我可以使用BLOBs,所以当我可以move&&使用大容器时,我希望尽可能避免复制构造.

我做了一个简单的测试,发现了initialize_list确实copy-construct为存储的元素,当它超出范围破坏它们.完美...然后我试图将数据移出,initializer_list并且令我惊讶的是,它并lvalues没有rvalues像我预期的那样使用std::move.

有趣的是,就在Going Native 2013之后发生了明显的警告我,移动不动,前进不会前进 ...... 就像水,我的朋友 - 留在思考的深层.

但这并没有阻止我:)我决定const_castinitializer_list价值观,仍然将它们移出去.需要强制执行驱逐令.这是我的实施:

template <typename Output_t, typename ...Input_t>
inline Output_t& Compact(Output_t& aOutput, Input_t&& ...aInput){
    // should I do this? makes sense...
    if(!sizeof...(aInput)){
        return aOutput; …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

C#Net.HttpClient取消ReadAsStringAsync?

我用SendAsyncHttpCompletionOption.ResponseHeadersRead来获取头文件.接下来我检查Content-TypeContent-Length确保响应是标记并且大小合适.如果超过某个时间跨度,我使用a CancellationTokenSource来取消SendAsync它.

但是,如果类型和大小正确,我继续实际获取标记字符串ReadAsStringAsync.我可以为此通话添加取消令牌吗?因此,如果实际下载时间太长,我可以中止它.或者这可以通过其他方式完成吗?

我不想使用,GetStringAsync因为我使用自定义HttpRequestMessage.

PS:我对C#很新,2周.有些东西可能会让我不知所措.

.net c# async-await dotnet-httpclient

9
推荐指数
2
解决办法
1925
查看次数

Direct3D编程新手:11对12

对于D3D编程的新手,在潜入D3D12之前,应该直接学习D3D12还是需要D3D11?

假设从头开始和C++的正确知识,我应该走哪条路?

direct3d direct3d11 direct3d12

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

无限循环中的BackgroundService Await Task.Delay 很难泄漏SqlConnection 对象

我有与此类似的代码在多个BackgroundServices (.NET 7)中运行。经过几天的运行时间(显然,循环之间的延迟为几分钟(到几小时))SqlConnection会导致数以万计的悬空句柄出现大量内存泄漏(可能所有曾经使用过的句柄仍然被引用,即使正确地与数据库)。我正在使用.NET 的 SqlClient 5.0.1。

磁力RE

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

using Microsoft.Data.SqlClient;

namespace Memleak;

static class Program
{
    const string connectionString = "Server=lpc:localhost;"
        + "Integrated Security=True;Encrypt=False;"
        + "MultipleActiveResultSets=False;Pooling=False;";

    static async Task Main(params string[] args)
    {
        using CancellationTokenSource cts = new();
        // not to forget it running
        cts.CancelAfter(TimeSpan.FromMinutes(15));
        CancellationToken ct = cts.Token;

        using Process process = Process.GetCurrentProcess();
        long loop = 1;

        while (true)
        {
            await ConnectionAsync(ct);

            // this seems …
Run Code Online (Sandbox Code Playgroud)

.net c# sqlclient async-await .net-7.0

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

Mime编码标头带有'='(==?utf-8?b?base64string?=)

这可能是一个愚蠢的问题,但......在这里!

我在本机C++中编写了自己的MIME解析器.这是编码的噩梦!它在过去3个月左右稳定,但最近我注意到了这一点Subject: header.

Subject: =?UTF-8?B?T2ZpY2luYSBkZSBJbmZvcm1hY2nDs24sIEluaWNpYXRpdmFzIHkgUmVjbGFt?===?UTF-8?B?YWNpb25lcw==?=
Run Code Online (Sandbox Code Playgroud)

哪个应该解码到这个:

Subject: Oficina de Información, Iniciativas y Reclamaciones
Run Code Online (Sandbox Code Playgroud)

问题是有一个额外= (equal)的,我无法弄清楚绑定两个(为什么2?)编码元素,我不明白为什么分开.理论上,格式应该是:=?charset?encoding?encoded_string?=但是找到另一个以两个开头的主题=.

==?UTF-8?B?blahblahlblah?=
Run Code Online (Sandbox Code Playgroud)

我应该如何处理额外的=

我可以取代==?=? (其中我)做任何事情之前(和它的作品) ...但我不知道是否有任何关于这个,所以我不砍我的方式进入正常功能样的规格的.

PS:我多讨厌这些遗物协议!所有文本通信应该是UTF-8和XML :)

encoding parsing mime protocols character-encoding

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

捕获文档级粘贴事件,无需聚焦输入或文本区域

<!DOCTYPE html>
<html>
<head>
    <title>Clipboard Paste Text</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> 
</head>
<body>
    <input type="text" placeholder="paste in here" />
    <script type="text/javascript">
    /* <![CDATA[ */
    $(document, 'input[type="text"]').on('paste', function(event) {
        var oEvent = event.originalEvent;
        oEvent.preventDefault();

        var clipText = '';
        if(window.clipboardData){
            clipText = window.clipboardData.getData('Text');
        }else if(typeof oEvent == 'object' && oEvent.clipboardData){
            clipText = oEvent.clipboardData.getData('text/plain');
        }

        // console.log('Pasted ' + clipText.length + ' characters.');
        alert('Pasted ' + clipText.length + ' characters.');
    });
    /* ]]> */
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

^ 我有这样的演示代码.它结合了paste event上 …

html javascript jquery

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

UI动画的标准方式是什么?

我工作的一个搭载UI库D2D,DWriteWic为(SDK API)本机C++桌面应用程序 (如无XAML,没有WinRT的,只是老派C++) .我已准备好编写一个无窗口UI,为我的工具提供更现代的(如本世纪的外观)C++.

我是一名内心的后卫,所以我花了很少的时间在UI上,并且大部分都与Windows标准和通用控件以及一些自定义绘制的GDI东西进行了交互.无论如何,没有什么花哨的.

我正在尝试,D2D我有兴趣了解UI动画的标准方法.就像当你将鼠标悬停在一个按钮上,使边框发光一点,或者一个UI元素由于交互而平滑移动,或者某些东西从屏幕上消失.(想想jQuery在UX的经济中褪色,滑动和如此短暂但有意义的动画)

考虑到这一点,我想到了两种处理UI动画的方法:

  • 一个独立的线程处理的动画队列中的计算,而UI线程绘制的结果.每次交互都会将动画作业放入队列中,线程会计算内容并在元素被绘制之前重新定位元素.
  • 使用相同的线程计时器来安排和迭代动画.

备用线程工作者方法似乎是一个好方法......但需要一点互锁时可视属性已更新,所以它不会发生,而实际绘制,以保持一致性.

现在,对于单线程UI ...定时器似乎是解决方案.这样可以确保绘图不会与动画计算重叠.但对我来说,感觉很尴尬.我不习惯单线生活方式.:)

还有另外一种方法吗?或者推荐哪种方法?我很欣赏有关现有实施细节或阅读材料的任何信息.

PS:如果downvoters或那些请求关闭的人实际上有理由,我会很感激.(1)如果你不知道我在问什么,那就继续......这绝对不是你的问题.(2)如果这对你来说太明显/简单,那就回答吧.---除非你是巨魔,否则我没有看到第三个原因.---或者这是一个非常愚蠢的问题,但正如我所说,我是十年+后卫,所以我可以逃脱它.

c++ windows user-interface animation direct2d

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

C# catch(FileNotFoundException) and CA1031

So this code triggers CA1031.

try
{
    // logic
}
catch (FileNotFoundException) // exception type
{
    // handle error
}
Run Code Online (Sandbox Code Playgroud)

While this one does not:

try
{
    // logic
}
catch (FileNotFoundException ex) // exception var
{
    // handle error
}
Run Code Online (Sandbox Code Playgroud)

Because the exception type is meaningful, I don't need the ex in the first example. But it's not a a general exception type. It's not IOException or Exception. So why does it still trigger the CA1031? …

c# code-analysis

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

HLSL常量缓冲区中阵列的意外大小

我还没有在这里使用更复杂的CB,但据我所知,我的C++对齐和打包必须与HLSL所期望的相匹配.所以我正在试图找出规则,所以我可以预测它的布局C++ structHLSL预期相匹配.

我正在做一些测试,Vertex Shader v5看看输出中产生的包装,并在下面使用了这个结构vs.hlsl:

cbuffer conbuf {
    float m0;
    float m1;
    float4 m2;
    bool m3[1];
    bool m4[4];
    float4 m5;
    float m6;
    float4 m7;
    matrix m8;
    float m9;
    float m10;
    float4 m11[2];
    float m12[8];
    float m13;
};
Run Code Online (Sandbox Code Playgroud)

它产生了以下输出(在Header File NameVC++ Project HLSL设置中):

cbuffer conbuf {
    float m0; // Offset: 0 Size: 4
    float m1; // Offset: 4 Size: 4
    float4 m2; // Offset: 16 Size: 16
    bool m3; …
Run Code Online (Sandbox Code Playgroud)

c++ directx direct3d hlsl

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

通用 Windows 应用程序中的全局热键

所以我创建了一个 UWP 应用程序,它可以录制多条音频线并将录音保存到 MP3 文件中,以便在游戏中进行多线录制,稍后我可以将其单独编辑(游戏音频、麦克风、游戏通信、语音通信)作为 NVidia ShadowPlay/Share还不支持这个。我用 VAC 实现了这个多线设置。

我有一个用常规 Windows WPF C# 编写的这个工具的版本,我有一个系统范围的热键Ctrl+Alt+R可以开始/停止录制,所以当我在全屏游戏中时,我可以开始/停止录制而不退出全屏模式(切换窗口焦点)

是否可以在 UWP 应用程序中实现触发某些应用程序内事件的全局(系统范围,应用程序窗口未聚焦)热键?我知道其他平台不支持该功能。但我只需要它在 Windows 10 桌面上运行,并且热键支持是强制性的。或者我可以通过任何其他方式为 UWP 应用实现我的目标吗?

目标:系统范围内的组合键可在 UWP 应用事件中触发,而无需切换窗口焦点并干扰全屏游戏。

c# win-universal-app uwp windows-10-universal

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