小编Eag*_*Eye的帖子

为什么锁(这个){...}不好?

MSDN文档说,

public class SomeObject
{
  public void SomeOperation()
  {
    lock(this)
    {
      //Access instance variables
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果可以公开访问实例,那就是"一个问题".我想知道为什么?是因为锁定的持有时间超过了必要的时间吗?还是有一些更阴险的原因?

c# multithreading locking

462
推荐指数
6
解决办法
15万
查看次数

从文件打开图像,然后释放锁定?

我正在使用以下代码行Image从文件中打开:

pictureBox1.Image = Image.FromFile("test.png");
Run Code Online (Sandbox Code Playgroud)

我希望它能锁定文件,将图像加载到内存中,设置pictureBox1.Image为内存中的副本,然后释放锁定.在现实中,锁不会消失,直到我Dispose()Image记忆.我无法释放我不再使用的硬盘上的文件锁,直到我删除了我正在使用的内存中的文件. 微软的网站在一篇带有C#标签的文章中提及它,但他们的解决方案是用visual basic编写的,这对我来说毫无用处.

总结:我想设置pictureBox1.Image存储的图像"test.png",然后让用户编辑或删除"test.png"或其他.

c# locking image winforms

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

如何覆盖(而非隐藏)C#子类中的成员变量(字段)?

我希望这能告诉我ItemA和ItemB的名称.它应该告诉我"Subitem \nSubitem",但它告诉我"Item \nSubitem".这是因为Subitem类中定义的"Name"变量在技术上是与基础Item类中定义的"Name"变量不同的变量.我想将原始变量更改为新值.我不明白为什么这不是最简单的事情,考虑虚拟和覆盖完美的方法工作.我一直无法找到如何实际覆盖变量.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Console.WriteLine(ItemA.Name);
            System.Console.WriteLine(ItemB.Name);
            System.Console.ReadKey();
        }
        static Item ItemA = new Subitem();
        static Subitem ItemB = new Subitem();
    }
    public class Item
    {
        public string Name = "Item";
    }
    public class Subitem : Item
    {
        new public string Name = "Subitem";
    }
}
Run Code Online (Sandbox Code Playgroud)

c# variables overriding new-operator

28
推荐指数
4
解决办法
4万
查看次数

为什么没有适用于Linux的DirectX API?

考虑到Windows系统上用于现代视频卡的DirectX API的驱动程序端实现,我想知道为什么这种实现在非Windows系统上是不可用的,最明显的是linux.

由于显然没有这个功能,我只能假设有一个很好的理由让我无视,但在我的原始理解中,我只是看到DirectX调用只不过是硬件设备上的函数入口点.而对于记录,我并不是指兼容层(最值得注意的是WINE,我每天都惊讶的项目),而是一个直接硬件调用的库.

是否可以创建directx的开源版本?它有可能但是非常困难吗?

linux directx drivers

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

为什么rsDebug不起作用?

我在Android RenderScript示例"Fountain"中插入了一个rsDebug方法,但是我没有从logcat中获取任何消息.

这是一个代码片段,用于演示我尝试过的内容:

int root() {
    float dt = min(rsGetDt(), 0.1f);
    rsDebug("dt", dt);
    ...
}
Run Code Online (Sandbox Code Playgroud)

android renderscript

11
推荐指数
1
解决办法
1136
查看次数

如何将char*指针转换为C++字符串?

我有一个C++ string.我需要将此字符串传递给接受char*参数的函数(例如 - strchr()).

a)我如何获得指针?

B)有一些功能等同于strschr()该工程C++ strings

c++ string pointers strchr

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

5
推荐指数
3
解决办法
2845
查看次数