小编rem*_*mio的帖子

剪贴板在.NET 3.5和4中表现不同,但为什么呢?

我们最近将一个非常大的项目从.NET framework 3.5升级到了4,最初一切看起来都是一样的.但是现在错误已经开始出现在复制粘贴操作上.我已经设法制作了一个可重复的小应用程序,它显示了.NET 3.5和4中的不同行为.我还找到了一种解决方法(手动将数据序列化到剪贴板),但我需要知道"为什么"行为有所不同.

这是我制作的小测试应用程序:

using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Windows.Forms;

namespace ClipboardTest
{
    public class Program
    {
        [Serializable]
        public class Element
        {
            public Element(string name)
            {
                this.name = name;
            }

            public string name;
        }

        public static List<Element> TestSerializer(List<Element> obj)
        {
            var memoryStream = new MemoryStream();
            var formatter = new BinaryFormatter();
            formatter.Serialize(memoryStream, obj);
            return (List<Element>)formatter.Deserialize(new MemoryStream(memoryStream.GetBuffer()));
        }

        public static List<Element> TestClipboard(List<Element> obj)
        {
            Clipboard.SetDataObject(obj);
            return (List<Element>)Clipboard.GetDataObject().GetData(typeof(List<Element>));
        }

        public static void DumpObject(string testName, List<Element> obj)
        {
            if …
Run Code Online (Sandbox Code Playgroud)

.net c# clipboard .net-4.0

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

在Angular 2中自动滚动

我遇到Angular 2的一个问题,从一个路由到另一个路由的更改不会自动滚动到新视图的顶部.我意识到Angular 1允许将一个autoscroll属性添加到HTML元素中,而其他人已经提出了一些简单的javascript(例如window.scroll(0, 0))来强制视图在加载时滚动到顶部.

但是,我不知道如何使用Angular 2完成此任务.有谁知道如何实现这一目标?

javascript angular2-routing angular

23
推荐指数
3
解决办法
1万
查看次数

如何在没有身份验证的情况下直接将邮件发送到SMTP服

我想直接从脚本发送电子邮件到Gmail电子邮件帐户,直接连接到smtp.gmail.com.

但是,我宁愿不在脚本中使用gmail密码.根据我的阅读,Gmail似乎需要进行身份验证才能发送任何邮件,包括发送给自己的用户.

我的问题是,来自另一台SMTP服务器的邮件是如何传递的,因为该SMTP服务器不具有Gmail凭据.Gmail是否仅要求对" 匿名 "发件人进行身份验证,而且由于我的脚本在个人计算机上运行,​​因此它具有更高的安全性?这是我正在运行的python脚本:

import smtplib
import email
msg = email.message.Message()
msg["From"] = "user@gmail.com"
msg["To"] = "user@gmail.com"
msg["Subject"] = "Test message"
server = smtplib.SMTP("smtp.gmail.com",587)
server.starttls()
server.ehlo_or_helo_if_needed()
try:
    failed = server.sendmail("user@gmail.com","user@gmail.com", msg.as_string())
    server.close()
except Exception as e:
    print(e)
Run Code Online (Sandbox Code Playgroud)

当我运行此脚本时,输出为:

(530, b'5.5.1 Authentication Required. Learn more at
5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 fw5sm21125889wib.0', 'user@gmail.com')
Run Code Online (Sandbox Code Playgroud)

我的问题是,外部SMTP服务器如何避免这个问题?它们是否可以在本地脚本中复制,还是需要正确的反向DNS记录,SPF记录等?

python authentication gmail smtp

21
推荐指数
2
解决办法
7万
查看次数

如何从Valgrind获得完整的调用堆栈?

我使用以下参数运行Valgrind:

--leak-check=full --show-reachable=yes --leak-resolution=high --num-callers=100 --trace-children=yes
Run Code Online (Sandbox Code Playgroud)

在内存泄漏日志中,我看到一些错误消息,完整堆栈跟踪到main,但有些消息如下所示:

==3956== 1,999,140 (68,796 direct, 1,930,344 indirect) bytes in 5,733 blocks are definitely lost in loss record 8,842 of 8,845
==3956==    at 0x4022AB8: malloc (vg_replace_malloc.c:207)
==3956== 
Run Code Online (Sandbox Code Playgroud)

如何获得这些错误的完整堆栈跟踪?

callstack valgrind memory-leaks

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

为什么string.Normalize不一致取决于上下文?

我有以下代码:

string input = "ç";
string normalized = input.Normalize(NormalizationForm.FormD);
char[] chars = normalized.ToCharArray();
Run Code Online (Sandbox Code Playgroud)

我使用Visual Studio 2010,.net4在64位Windows 7上构建此代码.

我在两个上下文中的单元测试项目(平台:任何CPU)中运行它并检查以下内容chars:

  • Visual Studio单元测试:字符包含{ 231 }.
  • ReSharper:字符包含{ 231 }.
  • NCrunch:字符包含{ 99, 807 }.

msdn文档中,我找不到任何表示不同行为的信息.

那么,为什么我会得到不同的行为?对我来说,NCrunch行为是预期的行为,但我希望其他行为也是如此.

编辑: 我切换回.Net 3.5仍然有同样的问题.

.net c# unicode normalization unicode-normalization

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

如何对PostSharp方面进行单元测试?

在询问了关于使用PostSharp实现方面的这个问题之后,我想到我将来可能不得不更新这方面的代码,并且我不想承担之后破坏所有内容的风险.

所以,我开始考虑单元测试.

我的第一个问题是:

考虑单元测试的一个方面是否相关?

我希望答案是"是",但如果没有,我希望得到其他建议.

然后,如果是这样,

如何实现PostSharp方面的单元测试?

.net c# aop unit-testing postsharp

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

从CWnd :: FromHandle获得的CWnd的生命周期是多少?

根据msdn,当我用CWnd :: FromHandle获得CWnd*时,

指针可能是临时的,不应存储以供以后使用.

"后期使用"的含义对我来说并不清楚.它只是当前方法的范围吗?据我所知,Win32中没有GC!

winapi mfc hwnd cwnd

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

如何从IList <>获取项目数作为对象?

在一个方法中,我得到一个object.

在某些情况下,这object可能是IList"某事"(我无法控制这个"某事").

我在尝试着:

  1. 确定此对象是IList(某事物)
  2. 把它object变成一个" IList<something>"就可以得到Count它.

现在,我陷入困境并寻找想法.

c# generics reflection ilist casting

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

如何在c#中读取httpWebRequest的请求流,我得到错误"流不可读"?

我想从HttpWebRequest继承的自定义类中读取请求流,HttpWebRequest并且我试图在不同的阶段读取请求流,但仍不确定如何在类中实现.

此自定义HttpWebRequest用于序列化soap消息,我想知道以字符串格式发送了什么请求.我也实现了自定义HttpRequestCreator,HttpWebResponse但仍然找不到我可以读取请求流的地方/阶段.

如果我输出所有MemoryStream内容然后复制内容以请求流,任何人都知道我可以在哪个阶段做到这一点?在构造函数中BeginGetRequestStream,EndGetRequestStreamGetRequestStream

.net httpwebrequest

11
推荐指数
2
解决办法
3万
查看次数

使用BufferedStream包装NetworkStream以进行异步读取是否安全?

我正在使用NetworkStream.BeginRead异步读取Socket.

但是,如果你真的用一个网络流包裹网络流,它会快得多BufferedStream.

我的问题:NetworkStream.BeginRead内部调用Socket.BeginReceive和整个堆栈的异步IO(Windows上的CompletionPorts等).BufferedStream在中间是否会发生同样的事情?

c# asyncsocket

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