问题列表 - 第41622页

即使使用InvokeRequired,跨线程操作也无效

我有一个带有自定义控件的表单.

我的表格中有一个方法:

private void SetEnabledOnControls(bool val)
{
  if (InvokeRequired)
  {
      Invoke((Action<bool>)SetEnabledOnControls, val);
  }
  else
  {
       //do the work - iterate over child controls, 
       //and they iterate over their children, etc...
  }
}
Run Code Online (Sandbox Code Playgroud)

else分支上的方法内部,我得到了提到的异常:
Cross-thread operation not valid: Control 'txtNumber' accessed from a thread other than the thread it was created on.

我的场景实际上有点复杂 - 我只是将其推断为一个例子.实际上发生的是我正在使用WorkflowFoundation - 我在WorkflowApplication中运行StateMachineActivity(CTP1)(它在自己的线程中运行),我订阅了它的事件,并从那里调用SetEnabledOnControls.此外,我正在使用书签来恢复我的工作流程(而且,旁边有MEF,没有涉及场景).

所有这些都与我对InvokeRequired的明显误解无关 - 如果InvokeRequired为false,我有可能有交叉线程异常吗?我没有"手动"创建任何控件 - 它都在设计者放置的Initialize()中.

任何人都可以对此有所了解吗?

谢谢!

编辑 使用GWLlosa建议,我使用了跟踪ThreadId System.Threading.Thread.CurrentThread.ManagedThreadId.现在来了奇怪的部分...... Initialize()中的线程id是10.在传递前2个状态之间,它带有Id 13 - InvokeRequired为true,并且它被正确调用.但是,在第二个状态之后,当它SetEnabledOnControls再次进入13时,但这次InvokeRequired是假的!怎么会!?当然,后来它无法改变儿童控制(这并不奇怪).可能是表格以某种方式改变了它所生活的线程?

编辑2 现在我打电话给:

 if …
Run Code Online (Sandbox Code Playgroud)

c# multithreading .net-4.0 thread-safety winforms

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

gcc错误消息存储库

我花了很多时间使用Microsoft编译器cl,发现它在编译消息中提供的错误代码(如C1234,C5432等)非常有用.当我得到一个我不熟悉的错误时,我可以在MSDN上轻松查找并获得更详细的解释.

现在我几乎完全使用gcc,我发现我错过了这个功能.当我在gcc中遇到一些错误时,我似乎花了很多时间在Google上搜索有关它的信息的错误文本.是否有一些gcc错误消息存储库,其中每个消息更详细地解释?

c c++ gcc visual-c++

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

PreferenceActivity中的ClassCastException

我试图从Reto Meier的Android 2应用程序开发书中找到一个例子来工作(第202页).根据我的说明,我创建了一个userpreferences.xml,如下所示:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
  <CheckBoxPreference
    android:key="PREF_AUTO_UPDATE"
    android:title="Auto refresh"
    android:summary="Select to turn on automatic updating"
    android:defaultValue="true"  
   />
  <ListPreference
    android:key="PREF_UPDATE_FREQ"
    android:title="Refresh frequency"
    android:summary="Frequency at which to refresh earthquake list"
    android:entries="@array/update_freq_options"
    android:entryValues="@array/update_freq_values"
    android:dialogTitle="Refresh frequency"
    android:defaultValue="60"
  />
  <ListPreference
    android:key="PREF_MIN_MAG"
    android:title="Minimum magnitude"
    android:summary="Select the minimum magnitude earthquake to report"
    android:entries="@array/magnitude_options"
    android:entryValues="@array/magnitude"
    android:dialogTitle="Magnitude"
    android:defaultValue="3"
  />
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

我的Preferences类看起来像这样......

public class Preferences extends PreferenceActivity {
  SharedPreferences prefs;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.userpreferences);
  }
Run Code Online (Sandbox Code Playgroud)

我一直得到一个ClassCastException:java.lang.ClassCastException:java.lang.Integer

12-16 09:28:14.349: ERROR/AndroidRuntime(287): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dt.sample/com.dt.sample.Preferences}: …
Run Code Online (Sandbox Code Playgroud)

android android-preferences

6
推荐指数
3
解决办法
7743
查看次数

如何根据NSDate计算年龄

如何根据出生日期计算年龄,格式为6/24/1976周一/日期/年...

date nsdate foundation ios

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

我怎么知道Lat,Lng点是否包含在圆圈内?

好吧非常自我解释.我正在使用谷歌地图,我试图找出一个纬度,长点是否在半径为x的圆内(x由用户选择).

边界框不适用于此.我已经尝试使用以下代码:

distlatLng = new google.maps.LatLng(dist.latlng[0],dist.latlng[1]);
var latLngBounds = circle.getBounds();
if(latLngBounds.contains(distlatLng)){
      dropPins(distlatLng,dist.f_addr);
}
Run Code Online (Sandbox Code Playgroud)

这仍然会导致标记位于圆圈之外.

我猜这是一些简单的数学需要计算曲率或面积,但我不知道从哪里开始.有什么建议?

geometry curve google-maps point latitude-longitude

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

一个快速的jQuery选择器问题

对不起,我有时候选择愚蠢...我怎么告诉jQuery给我所有类型为TABLE的"rctable"类的元素?例如

<table class="rctable" ..../>
Run Code Online (Sandbox Code Playgroud)

jquery

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

如何使用jquery检查输入类型是否为radio

我想根据类型不同地处理html元素.

使用jquery,如何检查输入类型是否为单选按钮?

我试过了:

if ($('#myElement').is(':radio')) {
    ....//code here
}
Run Code Online (Sandbox Code Playgroud)

if ($('#myElement').is("input[type='radio']")) {
    ....//code here
}
Run Code Online (Sandbox Code Playgroud)

这些都没有奏效.有任何想法吗?

编辑:

if ($('#myElement').is(':radio')) {
    ....//code here
}
Run Code Online (Sandbox Code Playgroud)

但是我的单选按钮没有id属性,它们只有一个name属性,这就是为什么它不起作用.

我将代码更改为:

if ($('input[name=' + myElement + ']').is(":radio")) {
    ....//code here
}
Run Code Online (Sandbox Code Playgroud)

html jquery

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

如何加入重叠的圈子?

我想在视觉上加入两个重叠的圆圈

AltText

替代文字

我已经有了部分圆的方法,但现在我需要知道earch圆的重叠角度有多大,我不知道该怎么做.

有人有想法吗?

c# opengl math geometry opentk

21
推荐指数
3
解决办法
2234
查看次数

jQuery这个选择器不适用于Image

好吧,我有一堆具有相同ID"mashupButton"的图像,但是我的印象是,如果我使用"this"创建一个jQuery click函数,而不是"#mashupButton"它只会执行该函数点击图片.这适用于我,但仅适用于页面上具有该ID的第一张图片,并且在我完成一次之后,它不再有效.

文件准备好后:

$("#mashupButton").click(function()
                {
                    $(this).effect("drop", {direction:"up"}, 1000);
                });
Run Code Online (Sandbox Code Playgroud)

标签就像:

<a href="#" onClick="differentFunction"><img src="imagename.png" id="mashupButton"></a>
Run Code Online (Sandbox Code Playgroud)

所以要澄清一下:我已经说了10张带有ID mashupButton的图像 - 我点击时会对该特定图像执行jQuery效果.但是它只适用于这些图像的第一个,即使它们都包含相同的ID.我是否需要为每个人提供唯一的ID,或者可以通过这种方式实现?

html javascript css jquery

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

URL安全性-什么被认为是安全的,不可猜测的URL?

我只是在考虑当前Web项目的URL。用户可以使用网站访问不同的资源,例如图像。URL看起来像这样http:// localhost:2143 / p / AyuducjPnfnjZGfnNdpAIumehLiWaYQKbZLMeACUqgsYJfsqarTnDMRbwkIxWuDd

现在,我确实需要高性能,一种方法可能是省略对数据库的额外往返身份验证,而仅依靠URL来进行猜测。

Google通过Picasa网络相册来实现此目的,您可以将相册设为私有或不公开。这样可以保护相册,但不能保护照片本身。拍下Skagen(丹麦)的照片;http://lh4.ggpht.com/_Um1gIFfF614/TQpVMvN3hPI/AAAAAAAANRs/GY5DxrDPHUE/s800/IMG_4074.JPG,它实际上在私人相册中,但您都可以看到。

那么您对此有何看法?64个字符长的随机字符串是否足够“安全”?还有其他方法吗?


假设我选择对资源的每个请求进行身份验证。用户已登录somedomain.com上的网站,他们可以在其中访问他们的相册。Cookie被丢弃以维持其身份验证。

现在,实际照片通过某种形式的CDN或存储服务在完全不同的URL上提供。

您将如何维护多个域的身份验证?假设两张专辑的内容可以从不同的服务器传递。

c# security url picasa

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