小编abi*_*ski的帖子

使用Eclipse从命令行构建Android项目

我在Windows 7 64位上在Eclipse(Indigo)中创建了一个"Hello World"Android项目.它使用Android SDK 1.6.

它从IDE构建而没有任何问题.

现在我想从命令行构建它.我发现了这个问题:在Eclipse中通过命令提示符或批处理文件带APT的Headless Building 打开eclipse项目,所以我运行了这个:

C:\inst\Android\eclipse>eclipsec.exe -data "C:\eclipsewsTest1" -application org.
eclipse.jdt.apt.core.aptBuild
Run Code Online (Sandbox Code Playgroud)

我得到的是以下内容:

Building workspace
Building '/And1'
Invoking builder on '/And1'.
Invoking builder on '/And1'.
Invoking 'Java Builder' on '/And1'.
Cleaning output folder for And1
Build done
Invoking builder on '/And1'.
Run Code Online (Sandbox Code Playgroud)

然后一个对话框显示此消息:

An error has occurred. See the log file C:\eclipsewsTest1\.metadata\.log
Run Code Online (Sandbox Code Playgroud)

此日志文件包含以下内容:

eclipse.buildId=M20110909-1335
java.version=1.7.0_01
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.java.product -application org.eclipse.jdt.apt.core.aptBuild
Command-line arguments:  -os …
Run Code Online (Sandbox Code Playgroud)

eclipse command-line android build

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

Enum.TryParse - 它是线程安全的吗?

我试图弄清楚.NET 4.0的Enum.TryParse是否是线程安全的.

源代码(反编译)是:

[SecuritySafeCritical]
public static bool TryParse<TEnum>(string value, bool ignoreCase, out TEnum result) where TEnum : struct
{
    result = default(TEnum);   /// (*)
    Enum.EnumResult enumResult = default(Enum.EnumResult);
    enumResult.Init(false);
    bool result2;
    if (result2 = Enum.TryParseEnum(typeof(TEnum), value, ignoreCase, ref enumResult))
    {
        result = (TEnum)enumResult.parsedEnum;
    }
    return result2;
}
Run Code Online (Sandbox Code Playgroud)

对我来说似乎有问题的是这一行:

result = default(TEnum);   /// (*)
Run Code Online (Sandbox Code Playgroud)

如果另一个线程在将其设置为默认值之后,并且在将其设置为已解析值之前访问结果,该怎么办?

[编辑]按照Zoidberg的回答,我想稍微改一下这个问题.

问题是,我想,如果Enum.TryParse是"事务性的"(或原子的).

假设我有一个静态字段,并将其传递给Enum.TryParse:

public static SomeEnum MyField;
....
Enum.TryParse("Value", out MyField);
Run Code Online (Sandbox Code Playgroud)

现在,当执行TryParse时,另一个线程访问MyField.TryParse会将MyField的值更改为SomeEnum的默认值一段时间,然后才会将其设置为已解析的值.

这不一定是我的代码中的错误.我希望Enum.TryParse能够将MyField设置为已解析的值,或者根本不触摸它,而不是将其用作临时字段.

.net c# enums .net-4.0 tryparse

5
推荐指数
3
解决办法
834
查看次数

标签 统计

.net ×1

.net-4.0 ×1

android ×1

build ×1

c# ×1

command-line ×1

eclipse ×1

enums ×1

tryparse ×1