我有两个线程,一个线程处理队列,另一个线程将内容添加到队列中。
然而,这些函数在调用时调用System.Threading.SynchronizationLockException: Object synchronization method was called from an unsynchronized block of code
,Monitor.PulseAll(waiting);
因为我尚未将函数与等待对象同步。[我不想这样做,我希望能够在将项目添加到队列时进行处理]。我怎样才能实现这个目标?
Queue<object> items = new Queue<object>();
object waiting = new object();
Run Code Online (Sandbox Code Playgroud)
第一个线程
public void ProcessQueue()
{
while (true)
{
if (items.Count == 0)
Monitor.Wait(waiting);
object real = null;
lock(items) {
object item = items.Dequeue();
real = item;
}
if(real == null)
continue;
.. bla bla bla
}
}
Run Code Online (Sandbox Code Playgroud)
第二个线程涉及
public void AddItem(object o)
{
... bla bla bla
lock(items)
{
items.Enqueue(o);
} …
Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法检测程序是否在默认(调试)密钥库(从eclipse运行时)或签名密钥库(当发布到Android市场时)运行时
我在我的应用程序中使用Google Maps,并且我希望以编程方式更改Maps API密钥以进行测试和发布,因为一个API密钥仅适用于测试或发布.
必须有一种方法可以做到这一点,因为谷歌地图可以检测用于编译应用程序的密钥库(启用或禁用地图).
在我之前的一个问题中,有人曾暗示使用信号量与使用显示器相比在C#中使用信号量昂贵.所以我问这个问题,如何用监视器替换此代码中的信号量?
我需要function1在function2(在一个单独的线程中)完成后返回它的值.我已经替换了Semaphore.WaitOne
a Monitor.Wait
和Semaphore.Release
a,Monitor.PulseAll
但是PulseAll
在Wait
导致程序挂起之前被触发了.知道如何避免这种竞争条件吗?
Semaphore semaphore = new Semaphore(0,1);
byte b;
public byte Function1()
{
// new thread starting in Function2;
semaphore.WaitOne();
return b;
}
public void Function2()
{
// do some thing
b = 0;
semaphore.Release();
}
Run Code Online (Sandbox Code Playgroud) 我只是试图运行NAudio演示,我得到一个奇怪的错误:
System.BadImageFormatException: Could not load file or a
ssembly 'NAudio, Version=1.3.8.0, Culture=neutral, PublicKeyToken=null' or one o
f its dependencies. An attempt was made to load a program with an incorrect form
at.
File name: 'NAudio, Version=1.3.8.0, Culture=neutral, PublicKeyToken=null'
at NAudioWpfDemo.AudioGraph..ctor()
at NAudioWpfDemo.ControlPanelViewModel..ctor(IWaveFormRenderer waveFormRender
er, SpectrumAnalyser analyzer) in C:\Users\Admin\Downloads\NAudio-1.3\NAudio-1-3
\Source Code\NAudioWpfDemo\ControlPanelViewModel.cs:line 23
at NAudioWpfDemo.MainWindow..ctor() in C:\Users\Admin\Downloads\NAudio-1.3\NA
udio-1-3\Source Code\NAudioWpfDemo\MainWindow.xaml.cs:line 15
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\M
icrosoft\Fusion!EnableLog] (DWORD) to 1. …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Android中使用Guava事件总线,但我订阅的事件似乎不起作用......我做错了什么?
这是我的活动:
package test.eventbus;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class EventBusTestActivity extends Activity {
EventBus eventbus = new EventBus();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
eventbus.register(this);
eventbus.post("message");
}
@Subscribe
void testEvent(Object bla) {
Log.d("EventBus Event", bla.toString());
}
}
Run Code Online (Sandbox Code Playgroud) 我打电话给
Resources resources = Resources.getSystem();
String[] networkFiles = resources.getStringArray(R.array.xmlNetworkFiles);
Run Code Online (Sandbox Code Playgroud)
我知道这个资源数组存在(因为我可以用自动生成的R文件引用它),但它继续抛出ResourceNotFoundException
.
可能导致这种情况的原因以及我该怎么做才能解决这个问题?
我在其他地方使用了类似的代码来检索一个int数组,但是这个代码在我的单元测试中总是失败.
最近每当我在Eclipse中打开我的工作区时,Package Explorer总是默认专注于我所有项目/资源文件的单个文件夹.我已经忍受了几个月,因为我可以"完成"以回到项目级别.
但是,我想对此进行排序.有谁知道我怎么能阻止Eclipse打开这个特定的文件夹作为默认值?
尝试获取元素“a”和“span”的值。使用 HTMLCleaner。
\n\n<div class="info">\n <p class="name">\n <a href="http://www.zxdv.com/level/1/film/616/sr/1/">Tron</a> \n <span class="year">2001</span>\n </p>\n</div>\n
Run Code Online (Sandbox Code Playgroud)\n\n这是代码:
\n\nTagNode linkElements[] = rootNode.getElementsByName("div", true);\nint s=0;\nfor (int i = 0; linkElements != null && i < linkElements.length; i++)\n{\n if (linkElements[i].getAttributes().toString().equals("{class=info}")) {\n TagNode linkElements2[] = linkElements[i].getElementsByName("p", true);\n for (int i2 = 0; linkElements2 != null && i2 < linkElements2.length; i2++)\n {\n TagNode linkElements3[] = linkElements2[i2].getElementsByName("a", true);\n TagNode linkElements4[] = linkElements2[i2].getElementsByName("span", true);\n for (int i3 = 0; linkElements3 != null && i3 < linkElements3.length; i3++)\n {\n …
Run Code Online (Sandbox Code Playgroud) 在下面的代码示例中,有一种“ Angular 方式”可以防止按钮单击或表单提交的默认事件。目前我正在使用“onsubmit”来完成任务。
<form onsubmit="return false;">
<input ng-model="ctrl.task">
<button class="btn btn-primary" ng-click="ctrl.addTask()">Add</button>
</form>
Run Code Online (Sandbox Code Playgroud) 我希望将两种风格结合在一起,形成一种超级风格,方便我的页面使用和自定义.
有可能定义这样的东西吗?(如果是这样的话)
.bold { font-weight: bold;}
.color1 {color: white;}
.boldColor {.bold; .color1;}
where .boldColor is effectively
.boldColor {font-weight:bold; color:white;}
Run Code Online (Sandbox Code Playgroud)
我希望这样,以便我可以在页面上拥有样式,并且能够在一个地方轻松地更改许多地方的颜色.我目前正在使用,<p class="bold color">
但我的一些课程变得越来越长,所以我希望能够使用<p class="boldColor">
谢谢