问题列表 - 第4271页

在多线程(Java或.Net)程序中,我可以假设复制变量是原子的吗?

当我想知道这个问题时,我在设计的应用程序中担心竞争条件.

假设我有一个大型数组或某种类型的集合,由我的程序的一个组件管理,让我们称之为组件Monitor.它的工作是定期检查集合是否"脏",即最近是否已更改,如果是,则将快照写入磁盘(这是为了在发生崩溃时检查应用程序)并再次将其标记为干净.

在不同线程中运行的同一程序的其他组件调用Monitor的方法来向数组/集合中添加数据或修改数据.这些方法将集合标记为脏.

现在,改变方法在其他组件的线程中运行,对吧?如果我不是那么幸运,可以在快照写入磁盘时调用它们,更改已经写入的数据,设置脏标志,监视器的线程在此之后取消设置,而不保存更改(它当它改变时已经超过了元素).所以我有一个标记为干净的脏集合.

有一段时间,我认为我可以通过制作集合的临时副本来解决问题,将其标记为干净,然后再序列化副本.但复制是否是原子的,即我可以确定在复制时集合不会改变吗?

与此同时,我认为我找到了更好的解决方案

  • 在开始写入磁盘之前设置锁定标志,并使数据更改方法等待,直到取消设置该标志
  • 让数据更改方法写入"更改队列"而不是直接写入集合,并让具有磁盘写入进程的线程队列

我认为锁定标志可能是最好的方式.但我仍然好奇:复制变量原子?


后续行动:也许这应该是一个自己的问题,但实际上它是非常相同的.根据下面的答案,我的"锁定旗帜"方法可能也行不通,对吧?因为数据更改方法可能会在将锁定标志设置为"锁定"值时检查锁定标志并确定它未锁定.所以我需要一个像mutex这样的特殊结构,如果我真的想做到这一点,对吗?


荣誉对埃里克森对他非常有帮助的答案在我的跟进.我真的应该提出这两个问题,所以我可以接受两个答案.拜托,也请他投票.

.net java multithreading race-condition

6
推荐指数
2
解决办法
576
查看次数

.NETView中的TreeView双击行为#C#

我有一个常规的.NET Windows窗体树视图控件.节点设置如下:

- -儿童

- -儿童

如果我双击折叠的组节点,它会展开(如您所料)并触发NodeMouseDoubleClick事件,如果所选节点不是组节点,我的代码会执行某些操作.

当组位于树视图的底部附近时会出现问题,因此当我双击组节点时,它将需要树视图垂直扩展以使子节点适合视图.在这种情况下,如果我双击组节点,当它扩展并调整树视图时,我的鼠标光标位于子节点上(它必须将所有内容都推到一起),这会导致NodeMouseDoubleClick认为子节点被选中,这会导致非常奇怪的行为.

我怎么能绕过这个?我不应该使用NodeMouseDoubleClick或..?

我看到它也在反馈报告中解释了扩展/折叠导致滚动更改后TreeView DoubleClick事件的问题.

.net c# treeview double-click winforms

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

列表视图控件是否有选择更改事件?

LBN_SELCHANGE除了列表视图之外,是否有等效的事件?

c winapi listview

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

将带空格的路径作为bat文件的参数传递

我有一个简单的bat脚本,它将文件从已知目录复制到用户指定的目录.如何将路径(可能包含空格)传递给我的脚本并将其与xcopy命令一起使用?


在我的代码中,我有以下内容

:READ_PWA_PATH
    if "%1" == "" ( 
        rem Set default path
        set PWA_PATH="C:\Program Files\PWA"
        rem
        echo You have not specified your PWA url.
        echo Default will be assumed: C:\Program Files\PWA. 
        choice /C:YN /M:"Do you wish to continue [Y] or cancel the script [N]?"
            IF ERRORLEVEL ==2 GOTO CANCEL
            IF ERRORLEVEL ==1 GOTO READ_WSS_SERVER_EXTENSIONS_PATH
        GOTO END
    ) else (
        set PWA_PATH=%1
    )
Run Code Online (Sandbox Code Playgroud)

如果我只是调用脚本,我会收到以下错误:

C:\Projects\Setup>install.cmd "C:\program files (x86)"

-----------------
SETUP SCRIPT
-----------------

files was unexpected at this time.
C:\Projects\Setup>
Run Code Online (Sandbox Code Playgroud)

parameters command batch-file

58
推荐指数
5
解决办法
18万
查看次数

缓存感知算法的一个简单示例?

有人可以发布缓存感知算法的任何简单解释吗?有许多链接可用,但这些网站的阅读材料本质上是学术性的,阅读和理解是耗时的.

algorithm caching

10
推荐指数
2
解决办法
4939
查看次数

div清除之后IE中额外的垂直空间

我创建了一个简单的div网格,通过左浮动它们和一个空的div,每行的末尾有一个清除.

这在Firefox中运行良好,但在IE中我在行之间获得额外的垂直空间.我试图应用"clearfix"方法,但我一定做错了.

为什么IE插入额外的垂直空间,我该如何摆脱它?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <style>
        root {
            display: block;
        }

        body {
            background: white;
        }

        .colorChip {
            position:relative;
            float: left;
            width: 20px;
            height: 20px;
            margin: 2px;
            border-style: solid;
            border-width: 1px;
            border-color: black;
        }

        .clear {
            clear: both;
        }

        .clearfix {
            display:inline-block;
        }

        .clearfix:after, .container:after {
            clear:both;
            content:".";
            display:block;
            height:0;
            visibility:hidden;
        }

        * html .clearfix {
            height:1%;
        }
        .clearfix {
            display:block;
        }

    </style>
    <!--[if IE]>
<style type="text/css">
  .clearfix …
Run Code Online (Sandbox Code Playgroud)

html internet-explorer clear

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

C#listView,如何将项目添加到第2,​​3和4列等?

要将项目添加到我正在使用的listView控件(Winform)中的第1列listView1.Items.Add,这可以正常工作,但如何将项目添加到第2列和第3列等?

c# listview winforms

105
推荐指数
4
解决办法
36万
查看次数

子文件夹受root web.config的影响

这应该是一个简单的问题,

我正在IIS下构建一个站点,其中一部分位于像\ blog这样子目录中, 我把它变成了一个虚拟目录.

根文件夹有自己的web.config和博客子文件夹有自己的.

root的web.config我用过:

<pages theme="DefaultTheme">
Run Code Online (Sandbox Code Playgroud)

并且子文件夹似乎受此影响,它会导致错误,告诉我没有这个主题.

解决办法是什么 ?

asp.net web-config virtual-directory

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

部分类,LINQ,接口和VB.NET

好的,我遇到了VB.NET的问题.所以那些VB.NET的维护者,你能帮助我吗?这是我的问题:我正在使用LINQ to Entities,它也适用于LINQ to SQL,我构建了我的edmx文件然后我创建了一个与实体之一同名的Partial Publc类所有细节到现在为止,所以这里来了问题.

我需要Partial类来实现Interface Implements Interfaces.IAsset但是VB.NET希望在属性的末尾放置"Implements Interfaces.IAsset.ID",这当然是在Partial类的生成代码部分中,我不能这样做,因为edmx文件是自动生成的,将来会改变.

以下是需要排序的代码行:

公共属性ID1()As Integer实现Interfaces.IAsset.ID

在C#中它很好并且可以创造奇迹.那么为什么VB.NET不能实现代码生成类中的接口呢?

vb.net interface

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

Java ME对象持久性

我知道Micro Edition of Java中没有Seri​​alization(Serializable).使用RMS保存像int和java.lang.String对象这样的原语是很简单的.但是如果我想保存(make persistant)一个任意对象?那可能吗?

serialization persistence rms midp java-me

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