小编D_D*_*S_B的帖子

如何在不同的线程上创建用户控件?

我正在创建一个UI,它将显示类似于分形和蜂窝自动化的生成模式,但它们将不断生成和自动化.

在此输入图像描述

像素和像素颜色将在用户控件中显示为正方形网格.我已经创建了usercontrol来显示它,但是因为它在每个计时器上不断计算.它会大大减慢UI的其余部分并导致所有其他元素断断续续.

所以我研究了线程并在BackgroundWorker DoWork()中设置了"计算"部分,最终并没有以我想要的方式运行.BackgroundWorker正在使用来自主线程(Rectangle [400])的数据,所以我不得不使用Dispatcher.Invoke(new Action(() => { }));它只是打败了目的,程序仍然非常"stuttery".

那么,我怎么能在一个单独的线程上创建一个usercontrol ... name:display_control并让它出现在另一个usercontrol中...... name:unsercontrol1(在主线程中运行),?然后我可以使用usercontrol1 User_Input_Class实例对user_input数据进行数据绑定.

或者,有没有更好的方法来实现这一目标?只有我能想到这样做的其他方法是简单地为显示创建一个完全独立的程序,并共享一个包含user_input数据的文件,这是非常不专业的.

public partial class Fractal_Gen_A : UserControl
{
    byte W_R = 0;
    byte W_G = 255;
    byte W_B = 0;

    int Pixel_Max_Width = 20;
    int Pixel_Max_Height = 20;

    Color[] Pixel_Color = new Color[20 * 20]; //Width_Max * Canvas_Height_Count
    Rectangle[] Pixel = new Rectangle[20 * 20];
    Color[] Temp_Color = new Color[20 * 20];

    BackgroundWorker worker = new BackgroundWorker();
    private void Timer_Tick(object sender, EventArgs e) …
Run Code Online (Sandbox Code Playgroud)

c# wpf user-controls multithreading image

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

标签 统计

c# ×1

image ×1

multithreading ×1

user-controls ×1

wpf ×1