小编Ali*_*Ali的帖子

C#中的简单多线程程序无法正常工作

我试图用C#编写一个简单的多线程程序.它有一个按钮按下,在窗体上创建一个新标签,然后一个for循环运行显示标签中的循环值.因此,如果您按下按钮3次,它将创建3个线程,在带有循环的表单上有3个标签.

当我按下按钮一次,它工作正常.但是当我不止一次按它来创建更多标签时,它会遇到以下问题:

  1. 一旦多次按下按钮,它就会在前一个线程中停止循环并运行新线程的循环.如果它是多线程的,那么它不应该停止第一次循环.

  2. 当第二个标签的循环结束时,它会产生以下错误

你调用的对象是空的

这是我的完整代码.抛出错误的行最后是"mylabel [tcount] .Text = i.ToString();".

程序截图:http://i.imgur.com/IFMIs.png

代码截图http://i.imgur.com/sIXtc.png

namespace WindowsFormsApplication2{
    public partial class Form1 : Form{
        public Form1(){
            InitializeComponent();
        }

        private int tcount = 0;
        private int y_point = 0;

        Thread[] threads = new Thread[5];
        Label[] mylabel = new Label[5];

        private void button1_Click(object sender, EventArgs e){
            threads[tcount] = new Thread(new ThreadStart(work));
            threads[tcount].Start();
        }

        private void work(){
            if (this.InvokeRequired){
                this.Invoke(new MethodInvoker(delegate{
                    mylabel[tcount] = new Label();
                    mylabel[tcount].Text = "label" + tcount;
                    mylabel[tcount].Location = new …
Run Code Online (Sandbox Code Playgroud)

c# multithreading

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

常量表达式在"UInteger"类型中无法表示

如果我在C#中运行以下代码,那么它运行正常

UInt32 a
a = 0x9E3779B9
Run Code Online (Sandbox Code Playgroud)

但是当我在VB.Net中运行相同的代码时,它会给我错误"常量表达式在'UInteger'类型中无法表示"

Dim a As UInt32
a = &H9E3779B9
Run Code Online (Sandbox Code Playgroud)

c# vb.net constant-expression

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

了解C#中Timer控件的工作原理

假设我有一个定时器控件,间隔设置为20ms.在这个控件里面,我正在做一些需要100ms才能完成的操作.所以一旦它进行了那个操作,Timer控制器会再次执行而不等待该操作完成吗?或者直到该操作没有完成,Timer才会再次执行?

编辑
我在控制台应用程序的一个单独的线程中使用System.Timers.Timer().我在下面与安德鲁讨论后编辑了我的问题.

.net c# timer

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

在C#中创建注册表项时拒绝访问

我试图在以下位置创建一个注册表项,但我得到访问被拒绝错误:

HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany的\ MyProgram

这是代码:

RegistryKey reg;
reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\MyCompany\MyProgram");
Run Code Online (Sandbox Code Playgroud)

c# registry access-denied

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

在C#中使用两个具有相同名称的静态类

我有一个DLL,我已经包含在我的C#项目中.我们称之为"one.dll"这个DLL包含一个名为"staticclass"的静态类

我有另一个DLL,我也包含在同一个项目中.我们称之为"two.dll"这个DLL还包含一个名为"staticclass"的静态类

现在当我在我的项目中同时包含两个DLL并尝试访问"staticclass"时,自然它会给出错误.有没有办法我可以更改类的名称或给它一些别名,所以让我们说"one.dll"中的"staticclass"将保持原样,我可以给"staticclassTwo"别名,这是"两个" .DLL"

请注意我无法访问"one.dll"和"two.dll"的源编解码器

c# dll static-classes

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