小编Cha*_*thJ的帖子

在Visual Studio 2015中调试XAML.Live Visual Tree和Live Properties在哪里

我下载了新的Visual Studio 2015 CTP6来测试新的XAML调试功能 - 但我找不到它们?我已经读过那些窗口应该在开始调试后立即打开但是它们没有出现 - 任何人都知道我做错了什么?

c# wpf xaml visual-studio visual-studio-2015

8
推荐指数
2
解决办法
3663
查看次数

.net中有哪些不同的堆?

我在dotmemory中分析了Windows窗体应用程序的内存使用情况,我注意到,对于我的应用程序,有大小不同的0-4堆以及大对象堆.

我只是想知道是否有人对每个堆的用途以及通常存储在每个堆中的内容有一个很好的解释?

.net c# garbage-collection memory-management heap-memory

8
推荐指数
2
解决办法
2922
查看次数

多个用户在同一个文件上写入

我有一个项目是一个Web API项目,我的项目由多个用户访问(我的意思是真的很多用户).当我的项目从前端(使用HTML 5的网页)访问,并且用户执行更新或检索数据之类的操作时,后端应用程序(Web API)将编写单个日志文件(.log文件,但内容为JSON).问题是,当被多个用户访问时,前端变得没有响应(总是加载).问题在于编写日志文件的过程(真正非常多的用户正在访问单个日志文件).我听说使用多线程技术可以解决问题,但我不知道哪种方法.所以,也许任何人都可以帮助我.这是我的代码(对不起,如果错字,我使用我的智能手机和移动版本的堆栈溢出):

public static void JsonInputLogging<T>(T m, string methodName)
{
    MemoryStream ms = new MemoryStream();
    DataContractJsonSerializer ser = new 
            DataContractJsonSerializer(typeof(T));
    ser.WriteObject(ms, m);
    string jsonString = Encoding.UTF8.GetString(ms.ToArray());
    ms.Close();
    logging("MethodName: " + methodName + Environment.NewLine + jsonString.ToString());
}


public static void logging (string message)
{
    string pathLogFile = "D:\jsoninput.log";
    FileInfo jsonInputFile = new FileInfo(pathLogFile);
    if (File.Exists(jsonInputFile.ToString()))
    {
        long fileLength = jsonInputFile.Length;
        if (fileLength > 1000000)
        {
            File.Move(pathLogFile, pathLogFile.Replace(*some new path*);
        }
    }
    File.AppendAllText(pathLogFile, *some text*);
}
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading

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

安装完成后如何运行批处理脚本?

我正在为一个C#项目的Visual Studio 2008(安装和部署>安装项目)中开发的自定义安装程序工作.我想在安装完成后运行批处理文件(*.bat).我怎样才能做到这一点?

.net c# installer windows-installer visual-studio-2008

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

堆内存问题

有一个WCF自托管服务,必须在99%的时间内工作.有时候我们会遇到这样的内存麻烦:

内存泄漏

但是在这个问题之后,服务正常.我们如何管理这个?任何提示和要点,以提供强大的服务,将在不同的情况下生存,非常受欢迎.

.net c# wcf memory-leaks memory-management

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

为什么WeakReference不是一个结构?

正如本文所述:http://www.philosophicalgeek.com/2014/08/14/prefer-weakreferencet-to-weakreference/

如果您正在使用WeakReference,则可能意味着您有点记忆.在这种情况下,分配新的WeakReference对象将产生额外的,不必要的内存压力.

所以在这种情况下,将它变成结构会不会更有意义吗?当我们在它的时候,并且摆脱SetTarget().

.net c# garbage-collection memory-management

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

如何从数组中删除枚举项

在C#中,如何从枚举数组中删除项?

这是枚举:

public enum example
{
    Example1,
    Example2,
    Example3,
    Example4
}
Run Code Online (Sandbox Code Playgroud)

这是获取枚举的代码:

var data = Enum.GetValues(typeof(example));
Run Code Online (Sandbox Code Playgroud)

如何Example2从数据变量中删除?我曾尝试使用LINQ,但我不确定是否可以这样做.

.net c# enums

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

发现内存泄漏

我有一个Web应用程序,我使用很多不同的第三方组件,CMS,当然还有我的代码.出于某种原因,我失去了内存异常.

脚本引发了异常:内存不足

我试图找出发生了什么.这就是我发现的:

  • 我用50个线程运行测试来调用我的web应用程序的15页.记忆似乎很好.IIS进程仅使用400 MB的RAM

  • 我在web.config中添加了一个空格,突然我的IIS进程在30分钟内开始增长到超过GB.Visual Studio无法拍摄我的内存快照,因为它太大了(真的吗?!)所以我安装了ANTS内存分析器,但它说我的应用程序只使用了大约300 MBANTS只有300 MB

IIS进程需要1 GB [1]:https://i.stack.imgur.com/Ig8pY.png

几分钟后我停止了测试,但内存没有释放.

(ANTS探测器停止工作,所以我重新启动它) 发布后422MB IIS 1.2GB 摘要 4MB的字符串

它似乎并不是应用程序特别使用100-200MB内存我正在为我的控制器使用输出缓存.我不明白的是,IIS消耗的内存一直在增长,出现了什么问题

更新

我的应用程序已自动重启,W3WP崩溃导致IIS释放内存,而我的压力没有运行一段时间:

应用程序:w3wp.exe Framework版本:v4.0.30319描述:由于.NET运行时在IP 5A3A86F1(5A0F0000)中出现内部错误而导致进程终止,退出代码为80131506.

错误应用程序名称:w3wp.exe,版本:10.0.15063.0,时间戳:0xacce422f错误模块名称:clr.dll,版本:4.7.2098.0,时间戳:0x59028d36异常代码:0xc0000005错误偏移量:0x002b86f1错误进程id:0x50a4错误应用程序启动时间:0x01d2ee688f323893错误应用程序路径:C:\ WINDOWS\SysWOW64\inetsrv\w3wp.exe错误模块路径:C:\ Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll报告ID:4362ddc5-f8d7- 4441-8916-3830f9268b3a错误包全名:错误包相关申请ID:

在此输入图像描述

更新2

我运行DebugDiag并且我已经对网站进行了压力测试,直到它消耗了大约3.5 GB的RAM.

在此输入图像描述

Chakra是微软的图书馆.

在此输入图像描述 在此输入图像描述

所以现在我有2个问题.

  1. ChakraCore是泄漏还是正在使用/分配它?如何定义哪个库?

2-它说27,000个分配.这是否意味着内存中仍有27,000个或者其中一些可能被分配然后处理?

3-它还没有告诉我任何关于3GB消耗RAM的剩余部分.它我总共只有600 MB(私有+虚拟).

c# iis asp.net-mvc memory-leaks memory-management

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

如何将现有的iOS App升级到Xamarin Forms App

目前,我有一个用Swift编写的iOS应用,将通过Xamarin Forms替换为新版本。我在访问旧的(Swift)钥匙串时遇到麻烦,这ItemNotFound是唯一返回的请求代码。两个应用程序都使用相同的捆绑ID。

这是我正在使用的代码:

byte[] _LegacyGetKeychainItem<T>(string key)
{
    using (var record = ExistingRecordForKey(key))
    using (var match = SecKeyChain.QueryAsData(record, false, out var resultCode))
    {
        if (resultCode == SecStatusCode.Success)
        {
            return match.ToArray();
        }
    }

    throw new InvalidOperationException(string.Format("GetKeychainItem: data was null for key: {0}", key));
}

SecRecord ExistingRecordForKey(string key)
{
    return new SecRecord(SecKind.GenericPassword)
    {
        Service = SEC_SERVICE, // Same as Bundle ID
        Account = key
    };
}
Run Code Online (Sandbox Code Playgroud)

keychain ios xamarin xamarin.forms

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

Clean + Rebuild和Clean + Build之间有什么区别吗?

我在cruiseControl中有一个msbuild任务,首先是Clearn,然后是Rebuild.如果我将其更改为清洁和构建(而不是重建),会有什么区别吗?

重建为每个项目执行"清理+构建".解决方案中的"Clean + Build"将清理所有项目,然后构建每个项目.可以有一些可以产生差异的角落案例吗?

c# cruisecontrol.net msbuild visual-studio devenv

6
推荐指数
2
解决办法
608
查看次数