我知道我之前已经完成了这个,但我认为我的构造函数的执行顺序是我认为....
public class Class1
{
Class2 _class2;
public Class1()
{
_class2 = new Class2(this);
}
}
public class Class2
{
Class1 _parent; //corrected typo
public Class2(Class1 parent)
{
_parent = parent;
}
}
Run Code Online (Sandbox Code Playgroud)
麻烦的是,父总是以null结尾.
这样做的正确方法是什么?(也许我可以归咎于我患感冒的缓慢......)
编辑纠正TYPO(这不是真正的代码中的问题!)
如何使用C++删除文件夹?
如果不存在跨平台方式,那么如何为最流行的操作系统 - Windows,Linux,Mac,iOS,Android?POSIX解决方案是否适用于所有这些解决方案?
我应该如何向动态数据Web应用程序添加其他搜索/过滤条件?
我使用Northwind数据库创建了一个动态数据Web应用程序,我正在使用Employees表的自定义页面(基于ListDetails.aspx页面模板).我想在页面中添加额外的search/filter/where参数.默认情况下,基于FilterRepeater控件动态创建where参数集合,该控件也是基于Employee Table具有的"外键"关系动态创建的.
为了尝试添加其他搜索条件,我已经绑定到GridView的LinqDataSource的Selecting事件,并尝试将其他项添加到LinqDataSourceSelectEventArgs的WhereParameters集合中.
问题是我无法指定需要执行哪种类型的比较.WhereParameters集合只接受String和Object,但不接受如何比较它们.我真正希望能够做的是添加谓词委托的集合......
我该如何向此页面添加其他搜索条件?通过应用于LINQ To SQL实体的属性(如果是,如何)?如果标准/标准不是基于实体本身,那么在这种情况下如何添加搜索条件呢?
亚伦霍夫曼
感兴趣的领域是字符串匹配.假设我有这样的结构.
typedef struct
{
char *name,
int (*function)();
} StringArray
StringArray s[] =
{
{"George", func1},
{"Paul", func2},
{"Ringo", func3},
{"John", func4},
{"", NULL} /* End of list */
}
Run Code Online (Sandbox Code Playgroud)
数组中有固定数量的字符串.它们是硬编码的,如示例中所示.如果表发生变化,则需要重新评估散列函数的质量.
我想将哈希函数应用于字符串,如果字符串与数组中的字符串匹配,则调用该函数.这需要一个完美的哈希函数.不允许冲突.要求散列的目的是在查找上获得O(1)性能.
您在设计功能时有什么想法?
我在C#2.0工作,但这适用于大多数面向对象的语言.当我创建具有包装私有字段的公共属性的类时,我会在内部是否应该使用属性或字段之间来回切换.当然C#3.0使自动属性更容易,但它仍然适用.
有关系吗?
public class Person
{
private string _name = "";
public string Name
{
get { return _name; }
set { _name = value; }
}
public Person(string name)
{
_name = name; //should I use the property or field here?
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个模板化的类,里面我有一个模板化的函数(不同的模板参数),我有问题让编译器调用正确的.
例:
template< class Parm1, class Parm2, class Parm3 >
class Class {
public:
void Func( Parm1 arg1, Parm2 arg2 ) {
Call<Parm3>( arg1, arg2 );
}
protected:
template< class Type >
void Call( Parm1 arg1, Parm2 arg2 ) {
}
template<>
void Call<void>( Parm1 arg1, Parm2 arg2 ) {
}
};
Run Code Online (Sandbox Code Playgroud)
因此,如果Parm3的类型为"void",我希望调用第二个Call.否则第一个.VS它工作正常,但GCC呕吐了它.它总是称为第一个.现在这是一个专门针对非专业课程的问题,还是与我专注于'void'的事实有关
任何帮助都会很棒.谢谢.
偶尔我需要使用固定宽度的整数与PLC等外部设备进行通信.我还使用它们来定义位掩码并执行图像数据的位操作.AFAIK C99标准定义了像int16_t这样的固定宽度整数.但是我使用的编译器,VC++ 2008不支持C99和AFAIK微软不打算支持它.
我的问题是在C++中使用固定宽度整数的最佳实践是什么?
我知道VC++定义了非标准的固定宽度整数,如__int16,但我对使用非标准类型犹豫不决.下一个C++标准是否会定义固定宽度的整数?
我有一个用户控件(下面),我将文本绑定到数据源并实例化一堆用户控件.
我希望文本的大小尽可能大,仍然适合控件的范围.在Windows编程中,我可以测量文本大小,减小字体大小,直到它适合目标尺寸.
有没有办法在Silverlight中这样做?
我知道我可能会以类似的方式做到这一点,但有没有"更好"的方式呢?
<Grid x:Name="gdBubble" Width="180" Height="95">
<Ellipse x:Name="elBubble" Fill="#FFFFA300" />
<TextBlock x:Name="txtContent" Text="{ Binding ClientName }" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
[我在这里使用网格,以使文本块正确居中.]
答案是Rich描述使用Viewbox.
这是获胜的配置(对我来说):
<Grid x:Name="gdBubble" Width="180" Height="95">
<Ellipse x:Name="elBubble" Fill="#FFFFA300" />
<controls:Viewbox Margin="10,10,10,10" VerticalAlignment="Stretch" Height="Auto">
<TextBlock x:Name="txtContent" FontSize="18" Text="{ Binding ClientName }" HorizontalAlignment="Center" VerticalAlignment="Center" />
</controls:Viewbox>
</Grid>
Run Code Online (Sandbox Code Playgroud) 用户点击页面spawn.aspx,然后生成六个线程,渲染页面全部使用
((System.Web.IHttpHandler)instance).ProcessRequest(reference to spawn's HTTPContext);
Run Code Online (Sandbox Code Playgroud)
不要担心ASP.Net似乎正在向用户发送1个请求的响应,该部分被处理并且只发送一个响应.
问题是,在具有许多线程(quad-quads)的高流量环境(我们的生产环境)中,我们得到一个错误:
Run Code Online (Sandbox Code Playgroud)System.IndexOutOfRangeException at System.collections.ArrayList.Add at System.Web.ResponseDependencyList.AddDependencies(String[] items, String argname, Boolean cloneArray, DateTime utcDepTime) at System.Web.ResponseDependencyList.AddDependencies(String[] items, String argname, Boolean cloneArray, String requestVritualPath) at System.Web.UI.Page.AddWrappedFileDependencies(Object virtualFileDependencies) at ASP.spawned_page_no_1_aspx.FrameworkInitialize() at System.Web.UI.Page.ProcessRequest
我们不能在别处复制它.我的同事认为这是因为我正在重用原始的HTTPContext并将其传递给其他线程,并且它不是线程安全的.
遵循这个逻辑,我尝试将新的HTTPContext传递给线程.但它的一部分似乎不会"结合".具体来说,我需要将Session对象放入新的HTTPContext中.我想我也想要其他部分,比如Cache.对于记录,HTTPContext.Current.Session.IsSynchronized为false.
我的问题是:
编辑:更多详细信息
所以回到这句话:"不要担心ASP.Net似乎正在向用户发送1个请求的响应,该部分被处理,只有一个响应被发送." Raymond Chen的巨大粉丝,我同意你的观点:"现在你有两个问题"是一个合理的陈述,如果没有更多的信息.
实际发生的是我正在构建一个Excel文档来发回.在spawn.aspx页面中,它设置了一些状态信息,包括它渲染为excel的事实,以及进行渲染的对象.每个衍生的页面都会获取该信息,并将阻止它们轮到渲染到该对象.如果字面上看起来像这样:
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
if (this.RenderToExcel)
{
Deadlocker.SpinUntilCurrent(DeadLockToken);
RenderReport(this, this.XLSWriter);
Deadlocker.Remove(DeadLockToken);
}
else
base.Render(writer);
}
Run Code Online (Sandbox Code Playgroud)
但到目前为止的所有处理 - 数据库访问,控制层次,所有这些都是并行完成的.并且它有很多 - 足够的,它仍然让它阻止渲染它的一部分将把总时间减少一半以上.
最好的部分是 - 没有必要为Excel渲染重写.所有控件都知道如何将自己渲染为excel,并且您可以独立访问每个衍生页面(实际上是'正常情况' - excel报告只是所有衍生页面的聚合.)
所以我认为最终的结果将是"你不能这样做,你需要重新思考这种方法" - 但我必须至少尝试一下,因为事实上一切都运行良好而不重复任何逻辑或任何代码或不得不抽象任何东西是如此完美.而且只有多线程就是问题,如果我按顺序渲染页面,一切都很好,只是很慢.
在我的ASP.Net应用程序,它是javascript和jQuery重,但也使用母版页和.Net Ajax片段,我一直在IE 6的状态栏(偶尔IE 7)看到消息"剩下2个项目"或"剩下15项",然后是"加载somegraphicsfile.png | gif".这条消息永远不会消失,可能会或可能不会阻止某些页面功能运行(它肯定似乎陷入困境,但我并不积极).
我可以通过刷新.aspx年龄使99%的时间发生这种情况,但项目数量,有时候,它提到的文件会有所不同.通常是2,3,12,13或15.
我用Google搜索了答案,并提出了一些建议或解释.他们中的一些人没有为我们工作,其他人对我们实施或尝试不切实际.
以下是一些想法/理论:
IE不是正确缓存图像,因此如果在页面上重复图像并且服务器假定它应该在本地缓存,则它会重复请求相同的图像,因为它已经在该页面上下文中提供了它.IE正确显示图像,但坐着等待从未到来的服务器响应.通常,页面上会重复它说它正在等待的文件.
该页面使用具有透明度的PNG图形.确实如此,但它们是jQuery-UI Themeroller生成的图形,根据jQuery-UI人员,IE是安全的.jQuery-UI组件是使用PNG的唯一内容.如果有帮助的话,我们所有的PNG引用都在CSS中.我已经将一些图形从PNG更改为GIF,但它可能会说它正在等待somegraphicsfile.png,就像somegraphicsfile.gif一样
图像在CSS和/或JavaScript中指定,但是在当前未显示的内容上(例如,显示:无项目).这可能是真的,但如果是,那么我认为预加载图像会起作用,但到目前为止,添加预加载器没有任何好处.
IIS的缓存策略使浏览器混乱.如果这是真的,那么只有Microsoft服务器SW出现微软浏览器的问题(这根本不会让我感到惊讶).不幸的是,我没有太多控制将托管应用程序的IIS配置.
有谁见过这个并找到了打击它的方法?特别是在使用jQuery和jQuery-UI的ASP.Net应用程序上?
UPDATE
另一个数据点:在至少一个页面上,只是注释掉jQuery-UI Datepicker组件设置会导致问题消失,但我不认为(或者至少我不确定)是否修复了所有问题的页面.如果它"修复"它们,我将不得不换掉插件,因为该功能需要存在.目前在IE6/7上似乎没有针对jQuery-UI的任何公开问题......
更新2
我检查了IIS设置,并且没有在我的任何文件夹上设置"启用内容过期" .取消选中该设置是解决此问题的常见建议.
我有另一个更简单的页面,我可以始终如一地创建错误.我正在使用jQuery-UI 1.6rc6文件(尽管我也尝试过jQuery-UI 1.7.1,结果相同).只有当我刷新包含jQuery-UI Datepicker的页面时才会出现此问题.如果我注释掉Datepicker设置,问题就会消失.我这样做时会注意到以下几点:
最终更新和答案
下面有很多好的答案和建议,但没有一个是我们的问题.最接近的一个(以及引导我解决方案的那个)是关于长期运行JavaScript的那个,所以我在那里授予赏金(我想我自己可以回答它,但我宁愿奖励导致解决方案的信息) .
这是我们的解决方案:我们有多个jQueryUI日期选择器,它们是在ASP.Net母版页中包含的脚本中的$(document).ready事件中创建的.在此客户端页面上,本地脚本的$(document).ready事件具有在特定条件下销毁日期选择器的脚本.我们不得不使用"destroy",因为以前版本的datepicker遇到了"禁用"问题.当我们升级到最新版本的jQuery UI(1.7.1)并用"禁用"替换了"destroy"s为datepickers时,问题就消失了(或者大部分都消失了 - 如果你在页面上做得太快的话正在加载,仍然可以获得"n项剩余"状态).
我关于发生的事情的理论是这样的:
c++ ×4
asp.net ×2
c ×2
c# ×2
function ×2
coding-style ×1
constructor ×1
css ×1
dynamic-data ×1
font-size ×1
hash ×1
httpcontext ×1
jquery ×1
jquery-ui ×1
oop ×1
portability ×1
silverlight ×1
string ×1
templates ×1
types ×1
visual-c++ ×1
wpf ×1