小编See*_*eeR的帖子

是否可以在Windows 8 metro/winRT中使用新的JIT编程语言?

让我们说我想创建一种新的编程语言或者使用MS不支持的某种语言(Haskell,Java ......等等),但希望能够对Windows 8 metro/winRT进行编码.

我知道Metro UI中的所有应用都是沙盒.
我知道我可以用原生C++编程,所以我假设我也可以在C或汇编中完成.
但:

  1. 是否有可能创建一个可以动态生成汇编代码的JIT - 比如CLR JIT-而不会破坏沙盒限制?
  2. 假设我只使用Metro沙箱中允许的API,是否可以不使用XAML作为UI界面? - 我可以直接使用Direct2D/DirectX吗?

jit programming-languages microsoft-metro windows-8 windows-runtime

20
推荐指数
4
解决办法
3115
查看次数

如何在ExecutionContext中包含自己的数据

我知道当你通过调用BeginInvoke()或ThreadPool.QueueUserWorkItem(...)并行运行某个方法时,.NET框架正在捕获包含代码访问安全信息和其他一些东西的ExecutionContext对象.

我想要的是在ExecutionContext中包含我的并行方法所需的一些数据,但也必须在排队任务时捕获.

问题是我并不总是能控制创建此并行任务的代码,所以我必须找到一种方法来存储这些数据,然后再调用这个外部代码.这就是为什么我想到ExecutionContext类.

当我并不总是控制在线程之间分割工作的代码时,有没有办法将某个状态传递给并行任务.

.net multithreading

9
推荐指数
1
解决办法
2232
查看次数

Encoding.GetEncoding(437).GetString()bug?

我有以下测试程序

char c = '§';
Debug.WriteLine("c: " + (int)c);

byte b = Encoding.GetEncoding(437).GetBytes("§")[0];
Debug.WriteLine("b: " + b);

char c1 = Encoding.GetEncoding(437).GetString(new byte[] { 21 })[0];
Debug.WriteLine("c1: " + (int)c1);
Run Code Online (Sandbox Code Playgroud)

这产生以下结果:

c: 167
b: 21
c1: 21
Run Code Online (Sandbox Code Playgroud)

正如我在这里看到的那样GetBytes
在unicode中工作正常167 =在CP437中> 21
但是在CP437中GetString不工作
21 =在unicode中> 21

这是一个错误还是我的错误?

.net c# character-encoding .net-3.5

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

EndInvoke更改当前的CallContext - 为什么?

我有以下测试

[Test]
public void aaa()
{
    CallContext.LogicalSetData("aa", "1");

    Action parallelMethod = () => CallContext.LogicalSetData("aa", "2"); 
    var r = parallelMethod.BeginInvoke(null, null); 
    parallelMethod.EndInvoke(r);

    Assert.That(CallContext.LogicalGetData("aa"), Is.EqualTo("1")); 
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么这个测试在最后一行失败?

其实我知道为什么 - 因为EndInvoke正在将paraConll方法的CallContext合并到当前的方法 - 但我不明白这个的原因.

对我来说,这种行为类似于从方法内部更改方法参数值:-(

编辑:我已经将我的代码示例更改为仅使用LogicalGetData和LogicalSetData.正如您在我的其他问题中所看到的,我想将一些数据传递给另一个线程,但我没想到EndInvoke()会覆盖我在其他线程中更改的值.

.net multithreading

6
推荐指数
1
解决办法
1372
查看次数

C#中的wglCreateContext失败但在托管C++中失败

我正在尝试在C#中使用opengl.我有以下代码失败,错误2000 ERROR_INVALID_PIXEL_FORMAT
首先定义:

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
public static extern IntPtr GetDC(IntPtr hWnd);

[StructLayout(LayoutKind.Sequential)]
    public struct PIXELFORMATDESCRIPTOR
    {
        public void Init()
        {
            nSize = (ushort) Marshal.SizeOf(typeof (PIXELFORMATDESCRIPTOR));
            nVersion = 1;
            dwFlags = PFD_FLAGS.PFD_DRAW_TO_WINDOW | PFD_FLAGS.PFD_SUPPORT_OPENGL | PFD_FLAGS.PFD_DOUBLEBUFFER | PFD_FLAGS.PFD_SUPPORT_COMPOSITION;
            iPixelType = PFD_PIXEL_TYPE.PFD_TYPE_RGBA;
            cColorBits = 24;
            cRedBits = cRedShift = cGreenBits = cGreenShift = cBlueBits = cBlueShift = 0;
            cAlphaBits = cAlphaShift = 0;
            cAccumBits = cAccumRedBits = cAccumGreenBits = cAccumBlueBits = cAccumAlphaBits = 0; …
Run Code Online (Sandbox Code Playgroud)

c# c++ opengl

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

WeakReference Bug?

[TestMethod]
public void Memory()
{
    var wr = new WeakReference("aaabbb");
    Assert.IsTrue(wr.IsAlive);
    GC.Collect();
    GC.Collect();
    GC.Collect();
    GC.Collect();
    GC.Collect();
    Assert.IsFalse(wr.IsAlive); //<-- fails here
}
Run Code Online (Sandbox Code Playgroud)

它是.NET 3.5 SP1
任何人都可以告诉我为什么这个测试失败了?

编辑:谢谢stusmith

你有一个字符串的引用,因为它是一个常量,可能是实例(即没有动态分配),永远不会被收集.

就是这样.将第一行更改为

var wr = new WeakReference(new object());
Run Code Online (Sandbox Code Playgroud)

并且测试通过:-)

.net c# memory-leaks

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

Visual Studio 中注释中带有 http 相对链接的 c# .cs 文件

假设我在 Visual Studio 中有以下 C# 项目结构

  • 规格
    • 用户故事1.html
    • 用户故事2.html
  • 测试
    • 测试1.cs
    • 测试2.cs

现在我想通过以下方式将我的单元测试与用 html 编写的规范连接起来

//http://../path.to.UserStory1.html#or_even_some_anchor
[TestFixture]
public class Test1
{
    [Test]
    public void SomeTest()
    {

    }        
}
Run Code Online (Sandbox Code Playgroud)

这样,当我按 CTRL+单击评论中的链接时,我可以跳转到规范并查看应该真正测试哪些内容。问题是我不知道如何对项目中包含的 html 文件进行相对路径。

  • 我怎样才能做到这一点?
  • 如果标准 VS 中没有,是否有可用的插件可以启用此功能?

c# unit-testing comments visual-studio

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