问题列表 - 第21576页

如何在C#中的Dispose()方法中配置托管资源?

我知道Dispose()用于非托管资源,并且在不再需要资源时不应该等待垃圾收集器完成对象.

但是,在处理对象时,它会抑制垃圾收集器的完成(GC.SuppressFinalize(this);在下面的代码中).这意味着如果对象包含托管资源,我们也必须照顾它,因为垃圾收集器不会清理它.

在下面的示例代码中(来自MSDN),"Component"是一个托管资源,我们为此资源调用dispose()(component.Dispose()).我的问题是,我们如何为作为托管资源的Component类实现此方法?我们应该使用像Collect()这样的东西来捅垃圾收集器来清理这部分吗?

任何想法将不胜感激.谢谢.

以下是我正在查看的代码来自MSDN:

using System;
using System.ComponentModel;

// The following example demonstrates how to create
// a resource class that implements the IDisposable interface
// and the IDisposable.Dispose method.

public class DisposeExample
{
// A base class that implements IDisposable.
// By implementing IDisposable, you are announcing that
// instances of this type allocate scarce resources.
public class MyResource: IDisposable
{
    // Pointer to an external unmanaged resource.
    private IntPtr handle;
    // Other managed resource this class uses. …
Run Code Online (Sandbox Code Playgroud)

.net c# resources garbage-collection dispose

12
推荐指数
2
解决办法
1万
查看次数

DLL和完全专业化的模板类

环境:Visual Studio 9,没有托管扩展的C++.

我有一个第三方库,它导出MyClass<42>MyClass.h中定义的完全专用的模板类.它被编译成辅助加载器.lib和.dll文件..lib文件包含此特化的编译代码和必要的符号.MyClass.h看起来像这样:

template<UInt D>
class MyClass {
public:
    MyClass() {...};
    virtual ~MyClass() {};
}
Run Code Online (Sandbox Code Playgroud)

现在我想使用这个库.如果我在Client.cpp中包含MyClass.h然后编译它,我将在Client.obj文件中获得这些符号的第二个副本.我可以通过将该专业化的所有成员定义为"extern"来摆脱这些符号.我的Client.cpp看起来像这样:

#include <ThirdParty/MyClass.h>

extern template class MyClass<42>;
extern template MyClass<42>::MyClass<42>();
extern template MyClass<42>::~MyClass<42>();

void MyFunction(MyClass<42>& obj) {...}
Run Code Online (Sandbox Code Playgroud)

问题是我无法以这种方式摆脱虚拟析构函数.对于虚拟析构函数,我得到一个几乎标准的LNK2005错误:

ThirdPartyd.lib(ThirdPartyd.dll) : error LNK2005:
    "public: virtual __thiscall MyClass<42>::~MyClass<42>(void)"
    (??1?$MyClass@$01@@@UAE@XZ) already defined in Client.obj
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

c++ linker templates visual-studio

8
推荐指数
1
解决办法
1748
查看次数

如何保证没有死锁

我在一次采访中被困在一个问题上.

给定两个线程,并且每个线程都有一个锁,如何保证没有死锁.

我的知识是避免死锁并不容易,这就是我被卡住的原因.任何人都可以暗示一下.

谢谢!

multithreading deadlock

5
推荐指数
1
解决办法
3137
查看次数

Qt ::它有多小?

我正在将Qt用于嵌入式Linux应用程序,并希望尽可能小.目前如果我制作一个静态编译的可执行文件,它将是3.9Mb,几乎只使用我需要的GUI部分.我只需使用qconfig和配置参数就可以达到3.9Mb.我在考虑通过在安装源代码之前修改源代码来确定它可以做多少,如果有人做了这样的事情,你有多小了?谢谢

qt install configure footprint

7
推荐指数
1
解决办法
1790
查看次数

Java Web Start身份验证选项

好的,在您认为这是一个简单的请求之前,它必须在那里; 我做了大约2-3个小时的搜索没有结果.有没有办法通过Java Web Start(javaws)传递身份验证信息来访问受密码保护的网站?

基本上我正在努力的是一个javaws应用程序的自动重启,而不必重新实现javaws做什么来拉下jar,然后必须在下载的应用程序上运行Java.我一直在努力寻找有关这方面的信息,但没有人愿意做我正在做的事情(主要是因为如果你有身份验证,那么你会希望有人进行身份验证).

身份验证方法是基本的,我已经尝试将用户名/密码嵌入到URL中无济于事.有任何想法吗?

authentication java-web-start

5
推荐指数
1
解决办法
2986
查看次数

错误?ASP.NET MVC 2中的客户端验证导致ValidationSummary消息显示即使没有错误

在ASP.NET MVC 2 RC2中打开客户端验证后,即使我第一次加载Edit.aspx页面,验证摘要消息也是可见的.它没有用粗体红色显示,只是纯文本.如果我提交带有错误的表单,则验证摘要消息将变为粗体红色,并在下面显示错误列表.

以下是包含验证摘要的代码:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyApp.ViewModels.PersonEditorViewModel>" %>

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>

<%  Html.EnableClientValidation(); %>

<%  using (Html.BeginForm())
    {
%>
        <%= Html.ValidationSummary("Edit was unsuccessful. Please correct the errors and try again.") %>
        <%= Html.EditorForModel() %>
        <p>
            <input type="submit" value="Save" />
        </p>
<%
    }
%>
Run Code Online (Sandbox Code Playgroud)

这是一个错误还是我做错了什么?如果它是一个bug,是否有解决方法?

注意:如果我关闭客户端验证,一切正常.

validation asp.net-mvc html-helper client-side asp.net-mvc-2

6
推荐指数
1
解决办法
1159
查看次数

Emacs:如何禁用'磁盘上的文件更改'检查?

如何禁用Emacs检查缓冲区文件是否在编辑器外更改?

emacs

19
推荐指数
4
解决办法
8078
查看次数

jQuery获取元素相对位置

我有以下标记:

<div id="selectable1">
<span class="drag">Some Text</span>
<span class="drag">Some Text</span>
<span class="drag">Some Text and <span class="drag">Some Other Text</span></span>
</div>
Run Code Online (Sandbox Code Playgroud)

我需要创建一个函数来获取任何跨度(嵌套或不嵌套)到主父级的相对位置 - #selectable1.

我试过使用position()但我的代码不起作用:

$(".drag").live('click',function(){ 
var relativepos = $('.drag').position().left
alert(relativepos); 
});
Run Code Online (Sandbox Code Playgroud)

有小费吗?感谢名单

jquery position

4
推荐指数
1
解决办法
7804
查看次数

无论目标机器的架构如何,如何获取程序文件的路径

我在C#/ .NET中编程.无论目标机器的架构是什么,我希望能够从目标机器返回Program Files目录.为了澄清,C (or whatever drive the OS is on):/Program Files无论他们的Windows版本有多大,我都希望它能够返回.

我只能在目录中进行硬编码,除非用户正在运行未安装在C:驱动器上的Windows,否则它将无法工作.

我发现

FileInfo(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles) 
Run Code Online (Sandbox Code Playgroud)

但我认为它返回Program Files (x86)64位Windows机器上的文件夹.

.net c# special-folders program-files

17
推荐指数
1
解决办法
2万
查看次数

有没有办法在Oracle数据库中创建自动递增的Guid主键?

我主要使用sql-server(当我使用数据库时),我正在尝试学习pl-sql.

是否有相当于sql-server的自动生成的Guid作为Oracle中的主键?

sql oracle uuid plsql guid

3
推荐指数
1
解决办法
2265
查看次数