小编syn*_*cis的帖子

保存图像文件和节省内存的最佳方法

在我的程序中,我正在创建一些大图片(Image对象),并将它们保存到磁盘.然后我将它们添加到一个列表中List<Image>但是在保存了50张图片并将它们作为Image对象添加到我的文件后,imageList它会占用内存的loooooot.我尝试在50个图像上执行此操作,只保存纯图像对象,我的程序在进程管理器中上升到160 MB.所以我必须找到一种方法来保存图片并将它们添加到列表中,而不会占用所有内存.

所以我有几个解决方案,我很想听听你对它们的看法,或者你有更好的解决方案.

  1. 压缩byte[]图像对象的数组.
  2. 压缩memorysteam对象的流.
  3. byte[]图像对象的数组转换为字符串,然后压缩字符串.

我在c#中这样做.

.net c# compression byte image

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

Mac或主板作为许可用途的唯一标识符?

好的,所以我使用MAC地址作为唯一标识符,一切顺利,直到我激活VPN并且mac地址改变了.....

所以,我有两个选择:

1)获取实际物理网卡的MAC地址

对于mac地址,我发现了几个如何实现这一目的的提示:

2.)获取主板ID并使用它,并希望我们不会得到2台具有相同ID的计算机(可能吗?)

public String getMotherBoardID()
{
    String serial = "";
    try
    {
        ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_BaseBoard");
        ManagementObjectCollection moc = mos.Get();

        foreach (ManagementObject mo in moc)
        {
            serial = mo["SerialNumber"].ToString();
        }
        return serial;
    }
    catch (Exception)
    {
        return serial;
    }
}
Run Code Online (Sandbox Code Playgroud)

你说什么?我应该尝试挖掘并找到从卡中获取mac地址而不是虚拟地址的代码,还是应该切换到主板?而且我不需要结合任何东西,我只需要在目标计算机上不会轻易改变的东西.

.net c# hardware visual-studio-2010

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

如何确定全局键盘挂钩是否已断开连接?

我使用了Stephen Toubs版本的全局键盘钩子,在WIN 7环境中使用它.

它工作正常,然后它就停止接收击键.

我在regedit中增加了超时值,但在一段时间后它仍然断开连接.

问题是,如何检测它是否已断开连接以及如何将挂钩设置为再次激活?

.net c# security visual-studio-2010

4
推荐指数
1
解决办法
837
查看次数

LINQ to Entities无法识别该方法

我有Linq to Entities的问题,我无法找到解决方法.

这是我的代码:

var queryResult = result.Where(x => x.FollowedUp.Value.GetWeekFromDateTime() 
    ==  DateTime.Now.GetWeekFromDateTime()).Select(x => x);
Run Code Online (Sandbox Code Playgroud)

我的扩展方法是:

    public static int GetWeekFromDateTime(this DateTime date)
    {
        return System.Threading.Thread.CurrentThread.CurrentCulture.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
    }
Run Code Online (Sandbox Code Playgroud)

问题:

我得到"LINQ to Entities无法识别方法GetWeekFromDateTime",我理解为什么因为它试图将我的代码翻译成sql代码并且"GetWeekFromDateTime"不存在.但是我该怎么办呢?我想比较从数据库到本周数据的日期的周数.

谢谢!

.net c# entity-framework

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

更改Thread.Priority以使程序更具响应性

我编写了一个.net winforms应用程序,该应用程序进行了一些繁重的处理,并使计算机运行速度大大降低。我读了一些关于

Thread.CurrentThread.Priority
Run Code Online (Sandbox Code Playgroud)

但是我真的不明白我应该给主线程更多的优先级还是降低主线程的优先级以消除计算机的“滞后”和运行缓慢。

谢谢。

c# multithreading visual-studio

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

在c#中记录击键时键入特殊字符时显示的双字符

我有一个应用程序,登录任何用户按下,但是当我按下特殊字符,如´a,得到á,我得到的´´a; 同样的事情,当我想得到à,然后我得到``a,所以所有特殊字符输入两次,然后常规字符输入后.

我一直在搜索,真的找不到任何东西.但我注意到问题出在ToAscii方法中,没有正确输入字符.

public string GetString(IntPtr lParam, int vCode)
{
    try
    {
        bool shift = Keys.Shift == Control.ModifierKeys || Console.CapsLock;

        string value = ""; 

        KeyboardHookStruct MyKeyboardHookStruct = 
            (KeyboardHookStruct)Marshal.PtrToStructure(
                lParam, typeof(KeyboardHookStruct));

        byte[] keyState = new byte[256];
        byte[] inBuffer = new byte[2];

        DllClass.GetKeyboardState(keyState);

        var ascii=
            DllClass.ToAscii(
                MyKeyboardHookStruct.vkCode, 
                MyKeyboardHookStruct.scanCode, 
                keyState, inBuffer, MyKeyboardHookStruct.flags
                );

        if (ascii == 1)
        {
            char key = (char)inBuffer[0];

            if ((shift) && Char.IsLetter(key))
                key = Char.ToUpper(key); …
Run Code Online (Sandbox Code Playgroud)

c# logging keycode character-encoding winforms

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