我们最近将一个非常大的项目从.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) 我遇到Angular 2的一个问题,从一个路由到另一个路由的更改不会自动滚动到新视图的顶部.我意识到Angular 1允许将一个autoscroll属性添加到HTML元素中,而其他人已经提出了一些简单的javascript(例如window.scroll(0, 0))来强制视图在加载时滚动到顶部.
但是,我不知道如何使用Angular 2完成此任务.有谁知道如何实现这一目标?
我想直接从脚本发送电子邮件到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记录等?
我使用以下参数运行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)
如何获得这些错误的完整堆栈跟踪?
我有以下代码:
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:
在msdn文档中,我找不到任何表示不同行为的信息.
那么,为什么我会得到不同的行为?对我来说,NCrunch行为是预期的行为,但我希望其他行为也是如此.
编辑: 我切换回.Net 3.5仍然有同样的问题.
在询问了关于使用PostSharp实现方面的这个问题之后,我想到我将来可能不得不更新这方面的代码,并且我不想承担之后破坏所有内容的风险.
所以,我开始考虑单元测试.
我的第一个问题是:
考虑单元测试的一个方面是否相关?
我希望答案是"是",但如果没有,我希望得到其他建议.
然后,如果是这样,
如何实现PostSharp方面的单元测试?
根据msdn,当我用CWnd :: FromHandle获得CWnd*时,
指针可能是临时的,不应存储以供以后使用.
"后期使用"的含义对我来说并不清楚.它只是当前方法的范围吗?据我所知,Win32中没有GC!
在一个方法中,我得到一个object.
在某些情况下,这object可能是IList"某事"(我无法控制这个"某事").
我在尝试着:
IList(某事物)object变成一个" IList<something>"就可以得到Count它.现在,我陷入困境并寻找想法.
我想从HttpWebRequest继承的自定义类中读取请求流,HttpWebRequest并且我试图在不同的阶段读取请求流,但仍不确定如何在类中实现.
此自定义HttpWebRequest用于序列化soap消息,我想知道以字符串格式发送了什么请求.我也实现了自定义HttpRequestCreator,HttpWebResponse但仍然找不到我可以读取请求流的地方/阶段.
如果我输出所有MemoryStream内容然后复制内容以请求流,任何人都知道我可以在哪个阶段做到这一点?在构造函数中BeginGetRequestStream,EndGetRequestStream或GetRequestStream?
我正在使用NetworkStream.BeginRead异步读取Socket.
但是,如果你真的用一个网络流包裹网络流,它会快得多BufferedStream.
我的问题:NetworkStream.BeginRead内部调用Socket.BeginReceive和整个堆栈的异步IO(Windows上的CompletionPorts等).BufferedStream在中间是否会发生同样的事情?
c# ×5
.net ×4
.net-4.0 ×1
angular ×1
aop ×1
asyncsocket ×1
callstack ×1
casting ×1
clipboard ×1
cwnd ×1
generics ×1
gmail ×1
hwnd ×1
ilist ×1
javascript ×1
memory-leaks ×1
mfc ×1
postsharp ×1
python ×1
reflection ×1
smtp ×1
unicode ×1
unit-testing ×1
valgrind ×1
winapi ×1