[编辑]我改变了斯蒂芬马丁建议的来源(以粗体突出显示).并添加了C++源代码.
我想在自编的C++ DLL中调用一个非托管函数.该库读取机器的共享内存,以获取第三方软件的状态信息.由于有几个值,我想在结构中返回值.但是,在结构中有char [](具有固定大小的char数组).我现在尝试从dll调用接收该结构,如下所示:
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEM_OUTPUT
{
UInt16 ReadyForConnect;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
String VersionStr;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
String NameOfFile;
// actually more of those
}
public partial class Form1 : Form
{
public SYSTEM_OUTPUT output;
[DllImport("testeshm.dll", EntryPoint="getStatus")]
public extern static int getStatus(out SYSTEM_OUTPUT output);
public Form1()
{
InitializeComponent();
}
private void ReadSharedMem_Click(object sender, EventArgs e)
{
try
{
label1.Text = getStatus(out output).ToString();
}
catch (AccessViolationException ave)
{
label1.Text = ave.Message;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也会发布c …
我有一个SearchController,其动作可以执行一些长时间运行的搜索并返回结果页面.搜索可能需要1到60秒.搜索的URL是以下格式的HTTP GET请求:http://localhost/Search?my=query&is=fancy
我正在寻找的体验类似于那里的许多旅游网站.我想展示一个中间的"正在加载......"页面,理想情况是:
这些都是不错的选择.我对所有想法持开放态度!谢谢.
c# asp.net-mvc performance user-interface progressive-enhancement
我得到了一些代码,其中一些参数是指针,然后指针被解引用以提供值.我担心指针取消引用会花费周期,但在查看之前的StackOverflow文章之后:取消引用指针有多贵?,也许没关系.
这里有些例子:
bool MyFunc1(int * val1, int * val2)
{
*val1 = 5;
*val2 = 10;
return true;
}
bool MyFunc2(int &val1, int &val2)
{
val1 = 5;
val2 = 10;
return true;
}
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢传递参考作为一种风格问题,但是一个版本(在处理周期方面)比另一个版本更好吗?
今天我有点辛苦了:
function mk_input( name, val ) {
var inp = document.createElement( 'input' );
inp.name = name;
inp.value = val;
inp.type = 'hidden';
return inp;
}
Run Code Online (Sandbox Code Playgroud)
事实证明,设置name通过创建的元素createElement在IE中不起作用.它不会导致错误或任何事情,它只是默默地失败,导致人们思考为什么他们的隐藏字段没有正确填充.
据我所知,没有解决方法.你必须咬住子弹并<input>通过字符串操作创建标签并将其粘贴在其中.innerHTML.
有没有更好的办法?也许像jQuery这样的东西?我做了一个粗略的搜索,并没有找到任何与createElementJQuery 完全类似的东西,但也许我错过了一些东西.
以下两段代码之间有什么区别:
using (Object o = new Object())
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
和
{
Object o = new Object();
// Do something
}
Run Code Online (Sandbox Code Playgroud)
我已经开始使用using更多但是我很好奇与范围对象相比实际上有什么好处.
编辑:我从中获取的有用花絮:
Jon Skeet:
请注意,这不会以任何方式,形状或形式强制进行垃圾收集.垃圾收集和快速资源清理有些正交.
埃德斯会评论:
除非您的类实现了IDisposable接口,并且具有Dispose()函数,否则不要使用.
我有一个基本的MVC应用程序 - 从MVC应用程序模板生成.我创建了一个基本的控制器,它包含通常的Index,Details,Edit和Create方法; 我有几个类来保存我的对象Person:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
另一个模拟假DAL.它不会将数据保存到文件或数据库,它只是为了这个原型的目的的快速模型:
public class PersonData
{
/* Fake out our initial repository */
static List<Person> People = new List<Person>()
{
new Person() { Id=1, FirstName="John", LastName="Doe", Description="King of the world" },
new Person() { Id=2, FirstName="Jane", LastName="Doe", Description="Chief whip cracker" }
};
/* Set …Run Code Online (Sandbox Code Playgroud) (后期编辑:这个问题将有望被淘汰时的Java 7自带因为的,"最终重投"功能,这似乎将被添加.)
很多时候,我发现自己处于这样的情况:
do some initialization
try {
do some work
} catch any exception {
undo initialization
rethrow exception
}
在C#中你可以这样做:
InitializeStuff();
try
{
DoSomeWork();
}
catch
{
UndoInitialize();
throw;
}
Run Code Online (Sandbox Code Playgroud)
对于Java来说,没有很好的替代,并且由于改进的异常处理的提议是从Java 7中删除的,所以看起来好几年才能得到类似的东西.因此,我决定自己动手:
(编辑: 半年后,最后的重新抛出回来了,或者看起来如此.)
public final class Rethrow {
private Rethrow() { throw new AssertionError("uninstantiable"); }
/** Rethrows t if it is an unchecked exception. */
public static void unchecked(Throwable t) {
if (t instanceof Error)
throw …Run Code Online (Sandbox Code Playgroud) 我正在使用p/invoke搞乱一些windows函数.偶尔,我得到的错误代码不是ERROR_SUCCESS(这么奇怪的名字).
有没有办法在程序中查看这些内容?例如,如果我收到错误1017.我可以告诉用户
系统已尝试将文件加载或还原到注册表中,但指定的文件不是注册表文件格式.(ERROR_NOT_REGISTRY_FILE:0x3F9)
代替
错误代码:1017
Outlook 2007中是否有办法在电子邮件对象上设置后续标志?看起来它在Outlook 2003中支持.FlagStatus属性,但我在2007年找不到它.
我有一个包含许多位列的产品信息表.可以从具有每列复选框的界面查询此表.复选框分为几个相关组.
例如,其中三列描述了产品适用于各种市场,包括汽车,航空和海运.
如果没有选中这些复选框,我希望执行以下SQL.
SELECT * FROM Products
Run Code Online (Sandbox Code Playgroud)
如果检查了Automotive,则应执行以下SQL
SELECT * FROM Products WHERE Automotive = 1
Run Code Online (Sandbox Code Playgroud)
如果检查了多个,我希望选项一起进行OR运算
SELECT * FROM Products WHERE
Automotive = 1
OR
Aviation = 1
Run Code Online (Sandbox Code Playgroud)
在古老的C#和SQL中,我可以通过有条件地将SQL结合在一起来实现这个逻辑,但是我在使用Linq生成相同的逻辑时遇到了麻烦.
我的问题是如何有条件地将WHERE子句及其元素添加到我的查询中.
我更喜欢只有一个点执行查询,所以,如果可能的话,我想避免使用C#,如果要分支到不同的查询.
c# ×6
asp.net-mvc ×2
c++ ×2
performance ×2
pinvoke ×2
.net ×1
asp.net ×1
dom ×1
exception ×1
ipc ×1
java ×1
javascript ×1
jquery ×1
linq ×1
linq-to-sql ×1
marshalling ×1
outlook ×1
outlook-2007 ×1
outlook-vba ×1
pointers ×1
scope ×1
using ×1
vba ×1
windows ×1