我正在尝试在C#中的Manager类中维护一个对象列表.基本上,使用者类向Manager类注册,而管理器类维护对使用者类的引用的集合.现在,就我对GC的有限理解而言,保持对消费者类的引用将阻止消费者类被垃圾收集.
我所追求的是一种维护对类中的类的引用的方法,该类可能会或可能不会指向使用者类(以可确定的方式),具体取决于它是否已被垃圾回收.如何在c#中做到这一点?
有没有办法,使用C中的Gtk库来克隆Gtk按钮(例如),并将其打包到应用程序中的其他位置.我知道你不能两次打包相同的小部件.并且这段代码显然不起作用,但显示当我尝试按钮的浅表副本时会发生什么:
GtkButton *a = g_object_new(GTK_TYPE_BUTTON, "label", "o_0", NULL);
GtkButton *b = g_memdup(a, sizeof *a);
gtk_box_pack_start_defaults(GTK_BOX(vbox), GTK_WIDGET(b));
Run Code Online (Sandbox Code Playgroud)
周围的代码创建了一个vbox并将其打包在一个窗口中并运行gtk_main().这将导致这些难以理解的错误消息:
(main:6044): Gtk-CRITICAL **: gtk_widget_hide: assertion `GTK_IS_WIDGET (widget)' failed
(main:6044): Gtk-CRITICAL **: gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed
**
Gtk:ERROR:/build/buildd/gtk+2.0-2.18.3/gtk/gtkwidget.c:8431:gtk_widget_real_map: assertion failed: (GTK_WIDGET_REALIZED (widget))
Run Code Online (Sandbox Code Playgroud)
同样,如果我要编写自己的GObject(不一定是Gtk小部件),是否有一种编写复制构造函数的好方法.我认为它应该是一个带有可选钩子的接口,主要基于属性,以某种方式处理类的层次结构.
我想这样做:
GtkButton *b = copyable_copy(COPYABLE(a));
Run Code Online (Sandbox Code Playgroud)
如果GtkButton可以使用理论上的可复制界面.
我刚开始探索PTL并有一个设计问题.
我的场景:我有一个URL列表,每个URL都引用一个图像.我希望每个图像并行下载.一旦下载了至少一个图像,我想执行一个对下载的图像执行某些操作的方法.该方法不应该并行化 - 它应该是串行的.
我认为以下内容可行,但我不确定这是否是正确的方法.因为我有收集图像的单独类以及对收集的图像做"某事",所以我最终传递了一系列任务,这似乎是错误的,因为它暴露了如何检索图像的内部工作方式.但我不知道如何解决这个问题.实际上,这两种方法都有更多,但这对此并不重要.只要知道它们真的不应该归结为一个大的方法,它既可以检索也可以对图像做一些事情.
//From the Director class
Task<Image>[] downloadTasks = collector.RetrieveImages(listOfURLs);
for (int i = 0; i < listOfURLs.Count; i++)
{
//Wait for any of the remaining downloads to complete
int completedIndex = Task<Image>.WaitAny(downloadTasks);
Image completedImage = downloadTasks[completedIndex].Result;
//Now do something with the image (this "something" must happen serially)
//Uses the "Formatter" class to accomplish this let's say
}
///////////////////////////////////////////////////
//From the Collector class
public Task<Image>[] RetrieveImages(List<string> urls)
{
Task<Image>[] tasks = new Task<Image>[urls.Count];
int index …Run Code Online (Sandbox Code Playgroud) 好的 - 所以我正在使用一个使用自定义日期选择器控件的系统(我知道还有其他的...但为了一致性,我想了解为什么我的当前问题正在发生并修复它).
因此,带有文本框和Page_PreRender的自定义用户控件执行此操作:
protected void Page_PreRender(object sender, EventArgs e)
{
string clientScript = @"
$(function(){
$('#" + this.Date1.ClientID + @"').datepicker({dateFormat: 'dd/mm/yy', constrainInput: true});
});";
Page.ClientScript.RegisterStartupScript(this.GetType(), this.ClientID, clientScript, true);
//Type t = this.GetType();
//if (!Page.ClientScript.IsStartupScriptRegistered(t, this.ClientID))
//{
// Page.ClientScript.RegisterStartupScript(t, this.ClientID, clientScript, true);
//}
}
Run Code Online (Sandbox Code Playgroud)
忽略注释掉的东西 - 那是我尝试不同的东西 - 没有帮助.
我的问题是,当我加载页面时,这一切都正常.但是如果我从下拉列表中选择一些导致页面回发的内容 - 当我点击我的日期字段时它们就会停止工作.就像我应该能够点击进入文本框一样,会出现一个漂亮的日历控件.但在回发后,没有出现漂亮的日历控件!
它目前全部包含在(在托管页面中)更新面板中.所以我评论了更新面板的东西,日期在页面回发后工作.所以它似乎与该更新面板有关.
有什么建议吗?
谢谢!!
在对齐两个文本时我遇到问题,一个在中心,另一个在右边.
我用Div来对齐它:
<div style="text-align:center">
<h1> Sample Heading</h1>
<div style="float:right; text-align:center">
<a href="#">sample link</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
当我使用它时,我的标题是左边的,它不是中心对齐,请告诉这是正确的方法还是有任何其他方法来处理这种情况.
谢谢
我在asp.net mvc 2上有一个应用程序,它在我的电脑上的IIS 7.5上我尝试分析它,我注意到Application_Start 不止一次被调用,
任何人都知道为什么会发生这种情况?
只是寻找超简单的东西.我需要将一个方法生成到一个新线程.
有人可以帮我这个吗?
谢谢
我试过下面的例子,它工作正常.
我期望它选择子类的值,因为不会为超类创建对象(因为它是抽象的).但它只是在提升超级类别的领域价值.
请帮我理解这背后的概念是什么?
abstract class SuperAbstract {
private int a = 2;
public void funA() {
System.out.println("In SuperAbstract: this.a " + a);
}
}
class SubClass extends SuperAbstract {
private int a = 34;
}
Run Code Online (Sandbox Code Playgroud)
我在打电话 new SubClass.funA();
我期待它打印34,但它打印2.
PS:我想知道的是为什么在抽象类中使用它而不给我一个错误?
如下所示,文本强调this可以在实例上工作,抽象类不会有实例.
在实例方法或构造函数中,这是对当前对象的引用 - 正在调用其方法或构造函数的对象.您可以使用此方法从实例方法或构造函数中引用当前对象的任何成员.来自:http://java.sun.com/docs/books/tutorial/java/javaOO/thiskey.html
我不明白为什么我的页面中的链接图像周围有这个蓝色边框.
我设置了大纲:没有边框:0但是它仍然存在(仅在Firefox和IE中)......这很奇怪.
http://www.alimdardesign.com/fabulicious/features.html
谢谢