8,735
社区成员
发帖
与我相关
我的任务
分享
public static void LoadContentByXap(string xapname,Action<object> done) {
var x = new DeploymentCatalog(xapname);
x.DownloadCompleted += (o, k) => {
done.Invoke(x.Parts);
};
x.DownloadAsync();
}
public static void LoadContentByXap(string xapname, string frameworkelementpath, Action<dynamic> carryback) {
var wc = new WebClient();
wc.OpenReadCompleted += (s, e) => {
var vv = new StreamResourceInfo(e.Result, "application/binary");
AssemblyPart ap = new AssemblyPart();
var assembly = ap.Load(Application.GetResourceStream(vv, new Uri(xapname + ".dll", UriKind.Relative)).Stream);
var content = assembly.CreateInstance(xapname + "." + frameworkelementpath);
if (carryback != null) {
carryback.Invoke(content);
}
};
wc.OpenReadAsync(new Uri(xapname + ".xap", UriKind.Relative));
}
void CheckBag(IPageBag bag, ref IPageBag bag2) {
//while (mark != 1) {
// Thread.Sleep(100);
//}
//Interlocked.Exchange(ref mark, 0);
//are.WaitOne();
bag2 = bag;
}
public void LoadMudel(string dllname, ref IPageBag bag) {
if (bag == null) {
var currentbag = default(IPageBag);
are.Reset();
Interlocked.Exchange(ref mark, 0);
Ex.LoadContentByXap(dllname+".xap",(object x) => {
currentbag = x as IPageBag;
are.Set();
Interlocked.Exchange(ref mark, 1);
});
CheckBag(currentbag, ref bag);
}
}
public static void LoadContentByXap(string xapname,Action<object> done) {
var x = new DeploymentCatalog(xapname);
x.DownloadCompleted += (o, k) => {
done.Invoke(x.Parts);
are.set();
};
x.DownloadAsync();
are.WaitOne();
}
public static void LoadContentByXap(string xapname, string frameworkelementpath, Action<dynamic> carryback) {
var wc = new WebClient();
wc.OpenReadCompleted += (s, e) => {
var vv = new StreamResourceInfo(e.Result, "application/binary");
AssemblyPart ap = new AssemblyPart();
var assembly = ap.Load(Application.GetResourceStream(vv, new Uri(xapname + ".dll", UriKind.Relative)).Stream);
var content = assembly.CreateInstance(xapname + "." + frameworkelementpath);
if (carryback != null) {
carryback.Invoke(content);
}
};
wc.OpenReadAsync(new Uri(xapname + ".xap", UriKind.Relative));
}
void CheckBag(IPageBag bag, ref IPageBag bag2) {
//while (mark != 1) {
// Thread.Sleep(100);
//}
//Interlocked.Exchange(ref mark, 0);
//are.WaitOne();
bag2 = bag;
}
public void LoadMudel(string dllname, ref IPageBag bag) {
if (bag == null) {
var currentbag = default(IPageBag);
Interlocked.Exchange(ref mark, 0);
Ex.LoadContentByXap(dllname+".xap",(object x) => {
currentbag = x as IPageBag;
Interlocked.Exchange(ref mark, 1);
});
CheckBag(currentbag, ref bag);
}
}
public IPageBag Bag2 {
get {
LoadMudel("Bag5", ref bag2);
return bag2;
}
}
public IPageBag Bag1 {
get {
LoadMudel("Bag4", ref bag1);
return bag1;
}
}