小编Dmi*_*hin的帖子

在分配控制台之前调用Console.WriteLine

我最近遇到了我的应用程序的以下问题:它没有显示任何控制台输出,虽然控制台已经使用分配AllocConsole.我设法很快发现它是由于AllocConsole在调用之前写入控制台的尝试(深深隐藏在代码中)引起的.所以它看起来像这样:

Console.WriteLine("Foo"); // no console allocated yet
AllocConsole();           // console window appears
Console.WriteLine("Bar"); // expecting "Bar" in the console, but the console is blank
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:为什么会发生这种情况?我没有看到任何例外(虽然我认为他们在那里).

c# console console.writeline

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

为什么已用内存量增加?

private void Draw(){
     int width  = Screen.PrimaryScreen.Bounds.Width;
     int height = Screen.PrimaryScreen.Bounds.Height;
     Bitmap image= new Bitmap(width, height);
     Graphics gr =  Graphics.FromImage(image);
     gr.CopyFromScreen(0, 0, 0, 0, new Size(width, height));
     Random rnd = new Random();

     gr.DrawEllipse(new Pen(Color.Red, rnd.Next(100)), rnd.Next(300), rnd.Next(100), rnd.Next(600), rnd.Next(1000));
     Point[] p = new Point[3];
     p[0] = new Point(rnd.Next(30),  rnd.Next(60));
     p[1] = new Point(rnd.Next(100), rnd.Next(260));
     p[2] = new Point(rnd.Next(30),  rnd.Next(10));
     gr.DrawPolygon(Pens.AliceBlue, p);
     gr.DrawBeziers(Pens.Yellow, p);
     pcImageBox.Image = image;
}
Run Code Online (Sandbox Code Playgroud)

当我每300毫秒使用Timer并调用该Draw()方法时,一切正常,但是当我查看流程管理器时,我的项目使用了更多的内存(内存每300毫秒增加一次)

也许我应该使用垃圾收集器或使用垃圾收集器p = null;。如何解决此问题?

感谢您的帮助,对不起我的英语不好。

c# memory

3
推荐指数
1
解决办法
200
查看次数

更改数组的一个元素会更改其他元素

我有以下代码:

Chromosome[] pop = new Chromosome[popSize];      
int[] initialGenes = new int[i];  
for (int m = 0; m < i; m++)  
     initialGenes[m] = -1;  
     for (int j = 0; j < popSize; j++)  
     {                
        pop[j] = new Chromosome(graph, initialGenes);  
     }  
Run Code Online (Sandbox Code Playgroud)

Chromosome 是我的班级,有财产

public int[] Genes { get; set; }
Run Code Online (Sandbox Code Playgroud)

如您所见,我初始化了一个Chromosome对象数组.问题是,当我试图改变的值pop[i].Genes[k](例如pop[1].Genes[2] = 123)所有Genes[k]pop改变(即

pop[0].Genes[2] == 123
pop[2].Genes[2] == 123 
Run Code Online (Sandbox Code Playgroud)

等等.)

谁能解释一下问题是什么?
谢谢.

c# memory arrays

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

RegisterHotkey会阻止系统中的所有其他热键

我使用RegisterHotkey函数在我的应用程序中创建了热键,就像这样

[DllImport("user32.dll")]
public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);
...
RegisterHotKey(FormHandle, HOTSAVE, MOD_CONTROL, (int)'S');
Run Code Online (Sandbox Code Playgroud)

FormHandle是应用程序主要形式的句柄,HOTSAVE- 是常量 - 热键的标识符.问题是,我的应用程序收到热键消息,即使它不在焦点,从而阻止其他应用程序处理他们的热键(例如Ctrl+S在记事本中将无法工作).

谁能指出问题出在哪里?谢谢.

c# winapi hotkeys

0
推荐指数
1
解决办法
767
查看次数

标签 统计

c# ×4

memory ×2

arrays ×1

console ×1

console.writeline ×1

hotkeys ×1

winapi ×1