簡體   English   中英

C#-在實例之間共享信息

[英]C# - Sharing information between instances

我的代碼很簡單。 當我在第一堂課中單擊一個按鈕時,它將創建Master的兩個實例和Arena的一個實例。 Arena需要從兩個Master實例接收信息,Arena需要向每個Master實例發送信息,但是兩個Master實例的信息都不相同。

//When I press a button...
master = new Master(ip1.Text);
master.Show();

slave = new Master(ip2.Text);
slave.Show();

arena = new Arena(master,slave);
arena.Show();

競技場課程:

private Master master;
private Master slave;

public Arena(Master master,Master slave)
{
    InitializeComponent();
    this.master = master;
    this.slave = slave;

}

我的問題是:

我可以創建新的Arena(master,slave),因為實例master和slave是在之前創建的。 但是我需要使用類似:

master = new Master(ip1.Text,arena);
master.Show();

slave = new Master(ip2.Text,arena);
slave.Show();

arena = new Arena(master,slave);
arena.Show();

但是我不能這樣做,因為創建主實例和從實例時,arena = null。 固定!!

編輯:

我有一個稱為Arena的實例,它接收實例Master和Slave作為參數。

    private Master master;
    private Master slave;

    public Arena(Master master,Master slave)
    {
        InitializeComponent();
        this.master = master;
        this.slave = slave;

    }

我的問題是如何為主機和從機返回不同的值。 例如:

public int missao_enviada;


 private void btn_enviar_Click(object sender, EventArgs e)
 {
missao_enviada = 1;
 }

   public int enviou_missao()
    {
        return missao_enviada;
    }

但是我只想將missao_enviada返回給Master主實例而不是Master從實例。

有沒有辦法做到這一點?

這是你想要的嗎?

    arena = new Arena();
    master = new Master(ip1.Text,arena);
    master.Show();

    slave = new Master(ip2.Text,arena);
    slave.Show();

    arena.SetMaster(master);
    arena.SetSlave(slave);

    arena.Show();

根據評論(在Arena課程內):

// Empty constructor
public Arena()
{
    InitializeComponent();
    // Do your stuff...
}

public void SetMaster(Master m) // Or use property; create similar for SetSlave
{
  master = m;
}

您應該使用Arena的構造方法將Arena分配為主控和從屬

private Master master;
private Master slave;

public Arena(Master master,Master slave)
{
    InitializeComponent();
    this.master = master;
    this.slave = slave;

    master.Arena = this;
    slave.Arena = this;
}

您應該修改您的大師班並為其添加Arena屬性

public class Master
{
    public Arena Arena { set; get;}
}

也許更好的解決方案是創建一個帶有靜態變量的靜態類,該類將在所有主站和從站中使用。 另一個解決方案可能是創建SQL light數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM