|300分用程序域|先建的AppDomain的窗,致後打的AppDomain的窗也!
建一Windows用程序,新建一Form,添加一Button,Button的Click事件代如下:
C#版本代
- C# code
private void button1_Click(object sender, EventArgs e) { AppDomain domain = AppDomain.CreateDomain("newdomain"); domain.ExecuteAssemblyByName(Assembly.GetExecutingAssembly().FullName); }
VB版本代
- VB.NET code
Private Sub Button1_Click(ByVal sender As Object ,ByVal e As EventArgs) Dim domain As AppDomain= AppDomain.CreateDomain("newdomain") domain.ExecuteAssemblyByName(Assembly.GetExecutingAssembly().FullName) End Sub
,行,在窗口上按,出新的窗(建了新的用程序域)。
某先打的窗,在窗之後打的窗都!如果把後打的窗先,就不有。
是何原因?如何解? 如果能解,再加100分.
PS:此有雅座,原地址http://topic.csdn.net/u/20080321/14/3359dc4a-49ea-4a7c-be52-40863e45ca1c.html,因CSDN之BUG致法在.NET大版示,故重。也可於。
[解决办法]
我觉得是 变量作用域 的原因。
AppDomain domain = AppDomain.CreateDomain("newdomain");
是声明在按钮事件里,这个窗体关掉时,声明的AppDomain也关掉了,所以后建的窗体会依次关掉。
[解决办法]
星级高发问,学习
[解决办法]
这样就以了随意关闭窗口了
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(tt));
t.Start();
}
private static void tt()
{
AppDomain domain = AppDomain.CreateDomain("newdomain");
domain.ExecuteAssemblyByName(Assembly.GetExecutingAssembly().FullName);
}
[解决办法]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
AppDomain domain = AppDomain.CreateDomain("newdomain");
domain.ExecuteAssemblyByName(Assembly.GetExecutingAssembly().FullName);
}
private void button2_Click(object sender, EventArgs e)
{
Form f = new Form();
f.Text = System.DateTime.Now.ToString();
f.Show();
}
}
}
1、当 Form1关闭所有的窗口关闭,所有窗口关闭
2、当点button2_Click后,弹出的新的应用界面窗口
3、新的应用界面窗口点button2_Click,弹出f,当新的应用界面关闭,新的f关闭,最先打开的主界面还在
4、最初打开的Form1,则关闭所有界面,包括新的应用界面
[解决办法]
亦可试试:
private int i = 0;
AppDomain.CreateDomain("newdomain" + this.i++);
[解决办法]
cdsgajxlp 的办法会导致关闭不了线程吗?