Comportamento dei membri statici con più istanze di applicazione – C #

Sto lavorando alla mia applicazione Windows e sto usando alcuni membri statici.

public class MyParameter { public static string connectionString = "..."; } 

Ora se installo la mia applicazione sul computer e apro due istanze della stessa applicazione. Will ‘connectionString’ comune alle due istanze ?? O ogni istanza ha la sua connectionString?

La variabile static o not fa parte della memoria dell’applicazione . Quando apri 2 istanze dell’applicazione , crei due distinte posizioni di memoria nel sistema operativo, quindi non esiste alcuna relazione tra queste 2 variabili.

Se vuoi crearne uno (relazione), devi considerare diversi metodi IPC (Inter Process Communication) disponibili nel sistema operativo, come:

  • File mappati in memoria
  • Named Pipes
  • Meccanismi IPC in C #: utilizzo e best practice

No, ogni istanza dell’applicazione è isolata l’una dall’altra utilizzando AppDomain. Pertanto ogni istanza dell’applicazione verrà eseguita in un AppDomain separato e non potrà accedere alle variabili da altri domini. Per comunicare con diversi domini è necessario utilizzare Remoting, Servizio WCF

Ogni istanza

I membri statici sono allocati su una base di AppDomain . Se dovessi generare un nuovo AppDomain all’interno del tuo attuale, sarebbero diversi.