这个问题建立在这个@ FredOverflow的问题上.
澄清:
initializer_list
需要方法,因为VC++ 2012有一个错误,阻止了命名空间参数的转发扩展._MSC_VER <= 1700
有错误.
我编写了一个可变参数模板函数,它可以折叠类型化容器中的任意数量的参数.我使用类型的构造函数将可变参数转换为可使用的值.例如_variant_t
:)
MySql
在一次打击MySqlVariant
中将参数推送到预准备语句时,我需要这个用于我的C++库,而我将输入数据转换为MYSQL_BIND
s.因为我可以使用BLOB
s,所以当我可以move&&
使用大容器时,我希望尽可能避免复制构造.
我做了一个简单的测试,发现了initialize_list
确实copy-construct
为存储的元素,当它超出范围破坏它们.完美...然后我试图将数据移出,initializer_list
并且令我惊讶的是,它并lvalues
没有rvalues
像我预期的那样使用std::move
.
有趣的是,就在Going Native 2013之后发生了明显的警告我,移动不动,前进不会前进 ...... 就像水,我的朋友 - 留在思考的深层.
但这并没有阻止我:)我决定const_cast
了initializer_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) 我用SendAsync
它HttpCompletionOption.ResponseHeadersRead
来获取头文件.接下来我检查Content-Type
并Content-Length
确保响应是标记并且大小合适.如果超过某个时间跨度,我使用a CancellationTokenSource
来取消SendAsync
它.
但是,如果类型和大小正确,我继续实际获取标记字符串ReadAsStringAsync
.我可以为此通话添加取消令牌吗?因此,如果实际下载时间太长,我可以中止它.或者这可以通过其他方式完成吗?
我不想使用,GetStringAsync
因为我使用自定义HttpRequestMessage
.
PS:我对C#很新,2周.有些东西可能会让我不知所措.
对于D3D编程的新手,在潜入D3D12之前,应该直接学习D3D12还是需要D3D11?
假设从头开始和C++的正确知识,我应该走哪条路?
我有与此类似的代码在多个BackgroundServices
(.NET 7)中运行。经过几天的运行时间(显然,循环之间的延迟为几分钟(到几小时))SqlConnection
会导致数以万计的悬空句柄出现大量内存泄漏(可能所有曾经使用过的句柄仍然被引用,即使正确地与数据库)。我正在使用.NET 的 SqlClient 5.0.1。
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) 这可能是一个愚蠢的问题,但......在这里!
我在本机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 :)
<!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
上 …
我工作的一个搭载UI库
D2D
,DWrite
并Wic
为(SDK API)本机C++桌面应用程序 (如无XAML,没有WinRT的,只是老派C++) .我已准备好编写一个无窗口UI,为我的工具提供更现代的(如本世纪的外观)C++
.
我是一名内心的后卫,所以我花了很少的时间在UI上,并且大部分都与Windows标准和通用控件以及一些自定义绘制的GDI东西进行了交互.无论如何,没有什么花哨的.
我正在尝试,D2D
我有兴趣了解UI动画的标准方法.就像当你将鼠标悬停在一个按钮上,使边框发光一点,或者一个UI元素由于交互而平滑移动,或者某些东西从屏幕上消失.(想想jQuery在UX的经济中褪色,滑动和如此短暂但有意义的动画)
考虑到这一点,我想到了两种处理UI动画的方法:
该备用线程工作者方法似乎是一个好方法......但需要一点互锁时可视属性已更新,所以它不会发生,而实际绘制,以保持一致性.
现在,对于单线程UI ...定时器似乎是解决方案.这样可以确保绘图不会与动画计算重叠.但对我来说,感觉很尴尬.我不习惯单线生活方式.:)
还有另外一种方法吗?或者推荐哪种方法?我很欣赏有关现有实施细节或阅读材料的任何信息.
PS:如果downvoters或那些请求关闭的人实际上有理由,我会很感激.(1)如果你不知道我在问什么,那就继续......这绝对不是你的问题.(2)如果这对你来说太明显/简单,那就回答吧.---除非你是巨魔,否则我没有看到第三个原因.---或者这是一个非常愚蠢的问题,但正如我所说,我是十年+后卫,所以我可以逃脱它.
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
? …
我还没有在这里使用更复杂的CB,但据我所知,我的C++对齐和打包必须与HLSL所期望的相匹配.所以我正在试图找出规则,所以我可以预测它的布局C++ struct
与HLSL
预期相匹配.
我正在做一些测试,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 Name
VC++ 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) 所以我创建了一个 UWP 应用程序,它可以录制多条音频线并将录音保存到 MP3 文件中,以便在游戏中进行多线录制,稍后我可以将其单独编辑(游戏音频、麦克风、游戏通信、语音通信)作为 NVidia ShadowPlay/Share还不支持这个。我用 VAC 实现了这个多线设置。
我有一个用常规 Windows WPF C# 编写的这个工具的版本,我有一个系统范围的热键Ctrl+Alt+R
可以开始/停止录制,所以当我在全屏游戏中时,我可以开始/停止录制而不退出全屏模式(切换窗口焦点)。
是否可以在 UWP 应用程序中实现触发某些应用程序内事件的全局(系统范围,应用程序窗口未聚焦)热键?我知道其他平台不支持该功能。但我只需要它在 Windows 10 桌面上运行,并且热键支持是强制性的。或者我可以通过任何其他方式为 UWP 应用实现我的目标吗?
目标:系统范围内的组合键可在 UWP 应用事件中触发,而无需切换窗口焦点并干扰全屏游戏。